diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt new file mode 100644 index 0000000..97d94c5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt @@ -0,0 +1,200 @@ +package com.casic.dcms.ui.fragment + +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Point +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PointPersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.ToastHelper +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.esri.arcgisruntime.util.ListenableList +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.fragment_person_map.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class PersonOnMapFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private var graphicsOverlays: ListenableList? = null + private var personBeans: ArrayList? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + + public override fun initLayoutView(): Int = R.layout.fragment_person_map + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + mapView!!.setViewpointScaleAsync(64000.0) + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + graphicsOverlays = mapView!!.graphicsOverlays + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + public override fun initEvent() { + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(context, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val point = identifyResult.graphicsOverlay.extent.center + for (dataBean in personBeans!!) { + val beanPoint = dataBean.point + if (abs(beanPoint.x - point.x) <= Constant.DELTA_LNG_10 && + abs(beanPoint.y - point.y) <= Constant.DELTA_LAT_10 + ) { + val message = weakReferenceHandler!!.obtainMessage() + message.what = 2021051901 + message.obj = dataBean + weakReferenceHandler!!.sendMessage(message) + } + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021051902) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + } + + private class WeakReferenceHandler(mapFragment: PersonOnMapFragment) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapFragment = reference.get() + val context = mapFragment!!.context + when (msg.what) { + 2021051901 -> { + val dataBean = msg.obj as PointPersonBean + val popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val deptNameView = popupView.findViewById(R.id.deptNameView) + val phoneNumberView = popupView.findViewById(R.id.phoneNumberView) + val lastTimeView = popupView.findViewById(R.id.lastTimeView) + userNameView.text = dataBean.personName + deptNameView.text = dataBean.personDept + phoneNumberView.text = dataBean.personPhone + lastTimeView.text = dataBean.pointTime + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapFragment.mapView!!) + } + 2021051902 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + if (dataBeans.size >= 1) { + personBeans = ArrayList() + for (bean in dataBeans) { + val lng = bean.positionLng + val lat = bean.positionLat + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "经纬度异常") + } else { + val personBean = PointPersonBean() + personBean.personName = bean.name + personBean.personPhone = bean.phone + personBean.personDept = bean.deptName + personBean.pointTime = bean.lastTimeFmt + personBean.isOnLine = bean.isOnLine + personBean.point = com.esri.arcgisruntime.geometry.Point( + lng.toDouble(), + lat.toDouble(), + SpatialReference.create(4326) + ) + personBeans!!.add(personBean) + } + } + addPictureMarker(personBeans!!) + } else { + ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR) + } + } + } + + private fun addPictureMarker(personBeans: List) { + var caseBitmap: Bitmap? + for (bean in personBeans) { + caseBitmap = if (bean.isOnLine) { + BitmapFactory.decodeResource(resources, R.mipmap.on_line) + } else { + BitmapFactory.decodeResource(resources, R.mipmap.off_line) + } + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphicsOverlay = GraphicsOverlay() + val graphics = graphicsOverlay.graphics + graphics.add(Graphic(bean.point, pictureMarker)) + graphicsOverlays!!.add(graphicsOverlay) + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } + + companion object { + private const val TAG = "PersonOnMapFragment" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt new file mode 100644 index 0000000..97d94c5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt @@ -0,0 +1,200 @@ +package com.casic.dcms.ui.fragment + +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Point +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PointPersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.ToastHelper +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.esri.arcgisruntime.util.ListenableList +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.fragment_person_map.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class PersonOnMapFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private var graphicsOverlays: ListenableList? = null + private var personBeans: ArrayList? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + + public override fun initLayoutView(): Int = R.layout.fragment_person_map + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + mapView!!.setViewpointScaleAsync(64000.0) + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + graphicsOverlays = mapView!!.graphicsOverlays + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + public override fun initEvent() { + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(context, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val point = identifyResult.graphicsOverlay.extent.center + for (dataBean in personBeans!!) { + val beanPoint = dataBean.point + if (abs(beanPoint.x - point.x) <= Constant.DELTA_LNG_10 && + abs(beanPoint.y - point.y) <= Constant.DELTA_LAT_10 + ) { + val message = weakReferenceHandler!!.obtainMessage() + message.what = 2021051901 + message.obj = dataBean + weakReferenceHandler!!.sendMessage(message) + } + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021051902) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + } + + private class WeakReferenceHandler(mapFragment: PersonOnMapFragment) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapFragment = reference.get() + val context = mapFragment!!.context + when (msg.what) { + 2021051901 -> { + val dataBean = msg.obj as PointPersonBean + val popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val deptNameView = popupView.findViewById(R.id.deptNameView) + val phoneNumberView = popupView.findViewById(R.id.phoneNumberView) + val lastTimeView = popupView.findViewById(R.id.lastTimeView) + userNameView.text = dataBean.personName + deptNameView.text = dataBean.personDept + phoneNumberView.text = dataBean.personPhone + lastTimeView.text = dataBean.pointTime + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapFragment.mapView!!) + } + 2021051902 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + if (dataBeans.size >= 1) { + personBeans = ArrayList() + for (bean in dataBeans) { + val lng = bean.positionLng + val lat = bean.positionLat + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "经纬度异常") + } else { + val personBean = PointPersonBean() + personBean.personName = bean.name + personBean.personPhone = bean.phone + personBean.personDept = bean.deptName + personBean.pointTime = bean.lastTimeFmt + personBean.isOnLine = bean.isOnLine + personBean.point = com.esri.arcgisruntime.geometry.Point( + lng.toDouble(), + lat.toDouble(), + SpatialReference.create(4326) + ) + personBeans!!.add(personBean) + } + } + addPictureMarker(personBeans!!) + } else { + ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR) + } + } + } + + private fun addPictureMarker(personBeans: List) { + var caseBitmap: Bitmap? + for (bean in personBeans) { + caseBitmap = if (bean.isOnLine) { + BitmapFactory.decodeResource(resources, R.mipmap.on_line) + } else { + BitmapFactory.decodeResource(resources, R.mipmap.off_line) + } + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphicsOverlay = GraphicsOverlay() + val graphics = graphicsOverlay.graphics + graphics.add(Graphic(bean.point, pictureMarker)) + graphicsOverlays!!.add(graphicsOverlay) + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } + + companion object { + private const val TAG = "PersonOnMapFragment" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java deleted file mode 100644 index 740b722..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.github.mikephil.charting.charts.PieChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.data.PieData; -import com.github.mikephil.charting.data.PieDataSet; -import com.github.mikephil.charting.data.PieEntry; -import com.github.mikephil.charting.formatter.PercentFormatter; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:43 - * @email : 290677893@qq.com - **/ -public class PieChartFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.pieChartView) - PieChart pieChartView; - - private String tag = ""; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private List entries; - private String begTime; - private String endTime; - - public static PieChartFragment newInstance(String tag) { - PieChartFragment pieChartFragment = new PieChartFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - pieChartFragment.setArguments(bundle); - return pieChartFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_chart; - } - - @Override - protected void setupTopBarLayout() { - - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - entries = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); - } - } - initPieChart(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - initPieChart(); - } - } - - private void initPieChart() { - pieChartView.setDragDecelerationFrictionCoef(0.95f); - pieChartView.setUsePercentValues(true);//百分比数字显示 - pieChartView.setDrawEntryLabels(false);//不显示分类标签 - pieChartView.setDrawCenterText(false); - pieChartView.getDescription().setEnabled(false); - pieChartView.setRotationAngle(0); - // enable rotation of the chart by touch - pieChartView.setRotationEnabled(true); - pieChartView.setHighlightPerTapEnabled(true); - pieChartView.setDrawHoleEnabled(false); - setChartData(); - pieChartView.animateY(1000); - - Legend l = pieChartView.getLegend(); - l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); - l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - l.setOrientation(Legend.LegendOrientation.VERTICAL); - l.setDrawInside(false); - l.setXEntrySpace(7f); - l.setYEntrySpace(1f); - l.setYOffset(0f); - // entry label styling - pieChartView.setEntryLabelColor(Color.BLUE); - pieChartView.setEntryLabelTextSize(12f); - pieChartView.setExtraOffsets(30, 30, 30, 30); - } - - private void setChartData() { - PieDataSet dataSet = new PieDataSet(entries, ""); - dataSet.setSliceSpace(0f); - dataSet.setSelectionShift(5f); - dataSet.setColors(Constant.PIE_COLORS); - //当数据太多时,将标签显示在饼图外 - if (entries.size() > 8) { - dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - } - dataSet.setValueLineColor(Color.GREEN); - dataSet.setValueLinePart1Length(0.6f); - PieData data = new PieData(dataSet); - data.setValueFormatter(new PercentFormatter(pieChartView));//坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 - data.setValueTextSize(12f); - data.setValueTextColor(Color.BLUE);//数据值颜色 - pieChartView.setData(data); - pieChartView.highlightValues(null); - pieChartView.invalidate(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt new file mode 100644 index 0000000..97d94c5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt @@ -0,0 +1,200 @@ +package com.casic.dcms.ui.fragment + +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Point +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PointPersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.ToastHelper +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.esri.arcgisruntime.util.ListenableList +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.fragment_person_map.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class PersonOnMapFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private var graphicsOverlays: ListenableList? = null + private var personBeans: ArrayList? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + + public override fun initLayoutView(): Int = R.layout.fragment_person_map + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + mapView!!.setViewpointScaleAsync(64000.0) + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + graphicsOverlays = mapView!!.graphicsOverlays + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + public override fun initEvent() { + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(context, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val point = identifyResult.graphicsOverlay.extent.center + for (dataBean in personBeans!!) { + val beanPoint = dataBean.point + if (abs(beanPoint.x - point.x) <= Constant.DELTA_LNG_10 && + abs(beanPoint.y - point.y) <= Constant.DELTA_LAT_10 + ) { + val message = weakReferenceHandler!!.obtainMessage() + message.what = 2021051901 + message.obj = dataBean + weakReferenceHandler!!.sendMessage(message) + } + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021051902) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + } + + private class WeakReferenceHandler(mapFragment: PersonOnMapFragment) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapFragment = reference.get() + val context = mapFragment!!.context + when (msg.what) { + 2021051901 -> { + val dataBean = msg.obj as PointPersonBean + val popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val deptNameView = popupView.findViewById(R.id.deptNameView) + val phoneNumberView = popupView.findViewById(R.id.phoneNumberView) + val lastTimeView = popupView.findViewById(R.id.lastTimeView) + userNameView.text = dataBean.personName + deptNameView.text = dataBean.personDept + phoneNumberView.text = dataBean.personPhone + lastTimeView.text = dataBean.pointTime + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapFragment.mapView!!) + } + 2021051902 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + if (dataBeans.size >= 1) { + personBeans = ArrayList() + for (bean in dataBeans) { + val lng = bean.positionLng + val lat = bean.positionLat + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "经纬度异常") + } else { + val personBean = PointPersonBean() + personBean.personName = bean.name + personBean.personPhone = bean.phone + personBean.personDept = bean.deptName + personBean.pointTime = bean.lastTimeFmt + personBean.isOnLine = bean.isOnLine + personBean.point = com.esri.arcgisruntime.geometry.Point( + lng.toDouble(), + lat.toDouble(), + SpatialReference.create(4326) + ) + personBeans!!.add(personBean) + } + } + addPictureMarker(personBeans!!) + } else { + ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR) + } + } + } + + private fun addPictureMarker(personBeans: List) { + var caseBitmap: Bitmap? + for (bean in personBeans) { + caseBitmap = if (bean.isOnLine) { + BitmapFactory.decodeResource(resources, R.mipmap.on_line) + } else { + BitmapFactory.decodeResource(resources, R.mipmap.off_line) + } + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphicsOverlay = GraphicsOverlay() + val graphics = graphicsOverlay.graphics + graphics.add(Graphic(bean.point, pictureMarker)) + graphicsOverlays!!.add(graphicsOverlay) + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } + + companion object { + private const val TAG = "PersonOnMapFragment" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java deleted file mode 100644 index 740b722..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.github.mikephil.charting.charts.PieChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.data.PieData; -import com.github.mikephil.charting.data.PieDataSet; -import com.github.mikephil.charting.data.PieEntry; -import com.github.mikephil.charting.formatter.PercentFormatter; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:43 - * @email : 290677893@qq.com - **/ -public class PieChartFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.pieChartView) - PieChart pieChartView; - - private String tag = ""; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private List entries; - private String begTime; - private String endTime; - - public static PieChartFragment newInstance(String tag) { - PieChartFragment pieChartFragment = new PieChartFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - pieChartFragment.setArguments(bundle); - return pieChartFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_chart; - } - - @Override - protected void setupTopBarLayout() { - - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - entries = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); - } - } - initPieChart(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - initPieChart(); - } - } - - private void initPieChart() { - pieChartView.setDragDecelerationFrictionCoef(0.95f); - pieChartView.setUsePercentValues(true);//百分比数字显示 - pieChartView.setDrawEntryLabels(false);//不显示分类标签 - pieChartView.setDrawCenterText(false); - pieChartView.getDescription().setEnabled(false); - pieChartView.setRotationAngle(0); - // enable rotation of the chart by touch - pieChartView.setRotationEnabled(true); - pieChartView.setHighlightPerTapEnabled(true); - pieChartView.setDrawHoleEnabled(false); - setChartData(); - pieChartView.animateY(1000); - - Legend l = pieChartView.getLegend(); - l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); - l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - l.setOrientation(Legend.LegendOrientation.VERTICAL); - l.setDrawInside(false); - l.setXEntrySpace(7f); - l.setYEntrySpace(1f); - l.setYOffset(0f); - // entry label styling - pieChartView.setEntryLabelColor(Color.BLUE); - pieChartView.setEntryLabelTextSize(12f); - pieChartView.setExtraOffsets(30, 30, 30, 30); - } - - private void setChartData() { - PieDataSet dataSet = new PieDataSet(entries, ""); - dataSet.setSliceSpace(0f); - dataSet.setSelectionShift(5f); - dataSet.setColors(Constant.PIE_COLORS); - //当数据太多时,将标签显示在饼图外 - if (entries.size() > 8) { - dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - } - dataSet.setValueLineColor(Color.GREEN); - dataSet.setValueLinePart1Length(0.6f); - PieData data = new PieData(dataSet); - data.setValueFormatter(new PercentFormatter(pieChartView));//坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 - data.setValueTextSize(12f); - data.setValueTextColor(Color.BLUE);//数据值颜色 - pieChartView.setData(data); - pieChartView.highlightValues(null); - pieChartView.invalidate(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt new file mode 100644 index 0000000..1b93193 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt @@ -0,0 +1,157 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.data.PieData +import com.github.mikephil.charting.data.PieDataSet +import com.github.mikephil.charting.data.PieEntry +import com.github.mikephil.charting.formatter.PercentFormatter +import kotlinx.android.synthetic.main.fragment_chart.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:43 + * @email : 290677893@qq.com + */ +class PieChartFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var entries: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_chart + + override fun setupTopBarLayout() {} + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseSource)) + } + } + initPieChart() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseType)) + } + } + initPieChart() + } + } + + private fun initPieChart() { + pieChartView!!.dragDecelerationFrictionCoef = 0.95f + pieChartView!!.setUsePercentValues(true) //百分比数字显示 + pieChartView!!.setDrawEntryLabels(false) //不显示分类标签 + pieChartView!!.setDrawCenterText(false) + pieChartView!!.description.isEnabled = false + pieChartView!!.rotationAngle = 0f + // enable rotation of the chart by touch + pieChartView!!.isRotationEnabled = true + pieChartView!!.isHighlightPerTapEnabled = true + pieChartView!!.isDrawHoleEnabled = false + setChartData() + pieChartView!!.animateY(1000) + val l = pieChartView!!.legend + l.verticalAlignment = Legend.LegendVerticalAlignment.TOP + l.horizontalAlignment = Legend.LegendHorizontalAlignment.LEFT + l.orientation = Legend.LegendOrientation.VERTICAL + l.setDrawInside(false) + l.xEntrySpace = 7f + l.yEntrySpace = 1f + l.yOffset = 0f + // entry label styling + pieChartView!!.setEntryLabelColor(Color.BLUE) + pieChartView!!.setEntryLabelTextSize(12f) + pieChartView!!.setExtraOffsets(30f, 30f, 30f, 30f) + } + + private fun setChartData() { + val dataSet = PieDataSet(entries, "") + dataSet.sliceSpace = 0f + dataSet.selectionShift = 5f + dataSet.setColors(*Constant.PIE_COLORS) + //当数据太多时,将标签显示在饼图外 + if (entries.size > 8) { + dataSet.xValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + dataSet.yValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + } + dataSet.valueLineColor = Color.GREEN + dataSet.valueLinePart1Length = 0.6f + val data = PieData(dataSet) + data.setValueFormatter(PercentFormatter(pieChartView)) //坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 + data.setValueTextSize(12f) + data.setValueTextColor(Color.BLUE) //数据值颜色 + pieChartView!!.data = data + pieChartView!!.highlightValues(null) + pieChartView!!.invalidate() + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): PieChartFragment { + val pieChartFragment = PieChartFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + pieChartFragment.arguments = bundle + return pieChartFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt new file mode 100644 index 0000000..97d94c5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt @@ -0,0 +1,200 @@ +package com.casic.dcms.ui.fragment + +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Point +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PointPersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.ToastHelper +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.esri.arcgisruntime.util.ListenableList +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.fragment_person_map.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class PersonOnMapFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private var graphicsOverlays: ListenableList? = null + private var personBeans: ArrayList? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + + public override fun initLayoutView(): Int = R.layout.fragment_person_map + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + mapView!!.setViewpointScaleAsync(64000.0) + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + graphicsOverlays = mapView!!.graphicsOverlays + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + public override fun initEvent() { + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(context, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val point = identifyResult.graphicsOverlay.extent.center + for (dataBean in personBeans!!) { + val beanPoint = dataBean.point + if (abs(beanPoint.x - point.x) <= Constant.DELTA_LNG_10 && + abs(beanPoint.y - point.y) <= Constant.DELTA_LAT_10 + ) { + val message = weakReferenceHandler!!.obtainMessage() + message.what = 2021051901 + message.obj = dataBean + weakReferenceHandler!!.sendMessage(message) + } + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021051902) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + } + + private class WeakReferenceHandler(mapFragment: PersonOnMapFragment) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapFragment = reference.get() + val context = mapFragment!!.context + when (msg.what) { + 2021051901 -> { + val dataBean = msg.obj as PointPersonBean + val popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val deptNameView = popupView.findViewById(R.id.deptNameView) + val phoneNumberView = popupView.findViewById(R.id.phoneNumberView) + val lastTimeView = popupView.findViewById(R.id.lastTimeView) + userNameView.text = dataBean.personName + deptNameView.text = dataBean.personDept + phoneNumberView.text = dataBean.personPhone + lastTimeView.text = dataBean.pointTime + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapFragment.mapView!!) + } + 2021051902 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + if (dataBeans.size >= 1) { + personBeans = ArrayList() + for (bean in dataBeans) { + val lng = bean.positionLng + val lat = bean.positionLat + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "经纬度异常") + } else { + val personBean = PointPersonBean() + personBean.personName = bean.name + personBean.personPhone = bean.phone + personBean.personDept = bean.deptName + personBean.pointTime = bean.lastTimeFmt + personBean.isOnLine = bean.isOnLine + personBean.point = com.esri.arcgisruntime.geometry.Point( + lng.toDouble(), + lat.toDouble(), + SpatialReference.create(4326) + ) + personBeans!!.add(personBean) + } + } + addPictureMarker(personBeans!!) + } else { + ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR) + } + } + } + + private fun addPictureMarker(personBeans: List) { + var caseBitmap: Bitmap? + for (bean in personBeans) { + caseBitmap = if (bean.isOnLine) { + BitmapFactory.decodeResource(resources, R.mipmap.on_line) + } else { + BitmapFactory.decodeResource(resources, R.mipmap.off_line) + } + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphicsOverlay = GraphicsOverlay() + val graphics = graphicsOverlay.graphics + graphics.add(Graphic(bean.point, pictureMarker)) + graphicsOverlays!!.add(graphicsOverlay) + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } + + companion object { + private const val TAG = "PersonOnMapFragment" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java deleted file mode 100644 index 740b722..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.github.mikephil.charting.charts.PieChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.data.PieData; -import com.github.mikephil.charting.data.PieDataSet; -import com.github.mikephil.charting.data.PieEntry; -import com.github.mikephil.charting.formatter.PercentFormatter; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:43 - * @email : 290677893@qq.com - **/ -public class PieChartFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.pieChartView) - PieChart pieChartView; - - private String tag = ""; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private List entries; - private String begTime; - private String endTime; - - public static PieChartFragment newInstance(String tag) { - PieChartFragment pieChartFragment = new PieChartFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - pieChartFragment.setArguments(bundle); - return pieChartFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_chart; - } - - @Override - protected void setupTopBarLayout() { - - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - entries = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); - } - } - initPieChart(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - initPieChart(); - } - } - - private void initPieChart() { - pieChartView.setDragDecelerationFrictionCoef(0.95f); - pieChartView.setUsePercentValues(true);//百分比数字显示 - pieChartView.setDrawEntryLabels(false);//不显示分类标签 - pieChartView.setDrawCenterText(false); - pieChartView.getDescription().setEnabled(false); - pieChartView.setRotationAngle(0); - // enable rotation of the chart by touch - pieChartView.setRotationEnabled(true); - pieChartView.setHighlightPerTapEnabled(true); - pieChartView.setDrawHoleEnabled(false); - setChartData(); - pieChartView.animateY(1000); - - Legend l = pieChartView.getLegend(); - l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); - l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - l.setOrientation(Legend.LegendOrientation.VERTICAL); - l.setDrawInside(false); - l.setXEntrySpace(7f); - l.setYEntrySpace(1f); - l.setYOffset(0f); - // entry label styling - pieChartView.setEntryLabelColor(Color.BLUE); - pieChartView.setEntryLabelTextSize(12f); - pieChartView.setExtraOffsets(30, 30, 30, 30); - } - - private void setChartData() { - PieDataSet dataSet = new PieDataSet(entries, ""); - dataSet.setSliceSpace(0f); - dataSet.setSelectionShift(5f); - dataSet.setColors(Constant.PIE_COLORS); - //当数据太多时,将标签显示在饼图外 - if (entries.size() > 8) { - dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - } - dataSet.setValueLineColor(Color.GREEN); - dataSet.setValueLinePart1Length(0.6f); - PieData data = new PieData(dataSet); - data.setValueFormatter(new PercentFormatter(pieChartView));//坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 - data.setValueTextSize(12f); - data.setValueTextColor(Color.BLUE);//数据值颜色 - pieChartView.setData(data); - pieChartView.highlightValues(null); - pieChartView.invalidate(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt new file mode 100644 index 0000000..1b93193 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt @@ -0,0 +1,157 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.data.PieData +import com.github.mikephil.charting.data.PieDataSet +import com.github.mikephil.charting.data.PieEntry +import com.github.mikephil.charting.formatter.PercentFormatter +import kotlinx.android.synthetic.main.fragment_chart.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:43 + * @email : 290677893@qq.com + */ +class PieChartFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var entries: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_chart + + override fun setupTopBarLayout() {} + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseSource)) + } + } + initPieChart() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseType)) + } + } + initPieChart() + } + } + + private fun initPieChart() { + pieChartView!!.dragDecelerationFrictionCoef = 0.95f + pieChartView!!.setUsePercentValues(true) //百分比数字显示 + pieChartView!!.setDrawEntryLabels(false) //不显示分类标签 + pieChartView!!.setDrawCenterText(false) + pieChartView!!.description.isEnabled = false + pieChartView!!.rotationAngle = 0f + // enable rotation of the chart by touch + pieChartView!!.isRotationEnabled = true + pieChartView!!.isHighlightPerTapEnabled = true + pieChartView!!.isDrawHoleEnabled = false + setChartData() + pieChartView!!.animateY(1000) + val l = pieChartView!!.legend + l.verticalAlignment = Legend.LegendVerticalAlignment.TOP + l.horizontalAlignment = Legend.LegendHorizontalAlignment.LEFT + l.orientation = Legend.LegendOrientation.VERTICAL + l.setDrawInside(false) + l.xEntrySpace = 7f + l.yEntrySpace = 1f + l.yOffset = 0f + // entry label styling + pieChartView!!.setEntryLabelColor(Color.BLUE) + pieChartView!!.setEntryLabelTextSize(12f) + pieChartView!!.setExtraOffsets(30f, 30f, 30f, 30f) + } + + private fun setChartData() { + val dataSet = PieDataSet(entries, "") + dataSet.sliceSpace = 0f + dataSet.selectionShift = 5f + dataSet.setColors(*Constant.PIE_COLORS) + //当数据太多时,将标签显示在饼图外 + if (entries.size > 8) { + dataSet.xValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + dataSet.yValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + } + dataSet.valueLineColor = Color.GREEN + dataSet.valueLinePart1Length = 0.6f + val data = PieData(dataSet) + data.setValueFormatter(PercentFormatter(pieChartView)) //坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 + data.setValueTextSize(12f) + data.setValueTextColor(Color.BLUE) //数据值颜色 + pieChartView!!.data = data + pieChartView!!.highlightValues(null) + pieChartView!!.invalidate() + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): PieChartFragment { + val pieChartFragment = PieChartFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + pieChartFragment.arguments = bundle + return pieChartFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/utils/RSAUtils.java b/app/src/main/java/com/casic/dcms/utils/RSAUtils.java deleted file mode 100644 index a35be19..0000000 --- a/app/src/main/java/com/casic/dcms/utils/RSAUtils.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.dcms.utils; - -import android.util.Base64; - -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; - -/** - * Created by W530 on 2019/9/26. - */ - -public class RSAUtils { - //构建Cipher实例时所传入的的字符串,默认为"RSA/NONE/PKCS1Padding" - private static String sTransform = "RSA/None/PKCS1Padding"; - //进行Base64转码时的flag设置,默认为Base64.DEFAULT - private static int sBase64Mode = Base64.DEFAULT; - - //初始化方法,设置参数 - public static void init(String transform, int base64Mode) { - sTransform = transform; - sBase64Mode = base64Mode; - } - - - private static byte[] processData(byte[] srcData, Key key, int mode) { - //用来保存处理结果 - byte[] resultBytes = null; - try { - //获取Cipher实例 - Cipher cipher = Cipher.getInstance(sTransform); - //初始化Cipher,mode指定是加密还是解密,key为公钥或私钥 - cipher.init(mode, key); - //处理数据 - resultBytes = cipher.doFinal(srcData); - - } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) { - e.printStackTrace(); - } - return resultBytes; - } - - public static String encryptDataByPublicKey(byte[] srcData, PublicKey publicKey) { - byte[] resultBytes = processData(srcData, publicKey, Cipher.ENCRYPT_MODE); - return Base64.encodeToString(resultBytes, sBase64Mode); - } - - public static PublicKey keyStrToPublicKey(String publicKeyStr) { - PublicKey publicKey = null; - byte[] keyBytes = Base64.decode(publicKeyStr, sBase64Mode); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); - try { - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - publicKey = keyFactory.generatePublic(keySpec); - } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { - e.printStackTrace(); - } - return publicKey; - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java deleted file mode 100644 index 544fcc3..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.core.content.ContextCompat; -import androidx.viewpager.widget.PagerAdapter; -import androidx.viewpager.widget.ViewPager; - -import com.bumptech.glide.Glide; -import com.casic.dcms.R; -import com.casic.dcms.utils.StatusBarColorUtil; -import com.gyf.immersionbar.ImmersionBar; -import com.luck.picture.lib.photoview.PhotoView; - -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; -import butterknife.ButterKnife; - -public class BigImageActivity extends AppCompatActivity { - - @BindView(R.id.imagePagerView) - ViewPager imagePagerView; - @BindView(R.id.leftBackView) - ImageView leftBackView; - @BindView(R.id.pageNumberView) - TextView pageNumberView; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_big_image); - ButterKnife.bind(this); - setupTopBarLayout(); - initEvent(); - } - - private void setupTopBarLayout() { - StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)); - ImmersionBar.with(this).statusBarDarkFont(false).init(); - leftBackView.setOnClickListener(v -> finish()); - } - - @SuppressLint("SetTextI18n") - private void initEvent() { - int index = getIntent().getIntExtra("index", 0); - ArrayList urls = getIntent().getStringArrayListExtra("images"); - if (urls == null || urls.size() == 0) { - return; - } - pageNumberView.setText("(" + (index + 1) + "/" + urls.size() + ")"); - imagePagerView.setAdapter(new BigImageAdapter(this, urls)); - imagePagerView.setCurrentItem(index); - imagePagerView.setOffscreenPageLimit(2);//设置预加载数量 - imagePagerView.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - pageNumberView.setText("(" + (position + 1) + "/" + urls.size() + ")"); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - } - - class BigImageAdapter extends PagerAdapter { - - private Context context; - private List data; - - BigImageAdapter(@NotNull Context context, @NotNull List imageList) { - this.context = context; - this.data = imageList; - } - - @Override - public int getCount() { - return data.size(); - } - - @Override - public boolean isViewFromObject(@NotNull View view, @NotNull Object object) { - return view == object; - } - - @NotNull - @Override - public Object instantiateItem(@NotNull ViewGroup container, int position) { - View view = LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false); - PhotoView photoView = view.findViewById(R.id.photoView); - Glide.with(context).load(data.get(position)).into(photoView); - photoView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); - container.addView(view); - //点击大图取消预览 - photoView.setOnClickListener(v -> BigImageActivity.this.finish()); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, @NotNull Object object) { - container.removeView((View) object); - } - } - - //设置切换动画 - public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { - //自由控制缩放比例 - private static final float MAX_SCALE = 1f; - private static final float MIN_SCALE = 0.85f;//0.85f - - @Override - public void transformPage(@NotNull View page, float position) { - - if (position <= 1) { - float scaleFactor = MIN_SCALE + (1 - Math.abs(position)) * (MAX_SCALE - MIN_SCALE); - page.setScaleX(scaleFactor); - if (position > 0) { - page.setTranslationX(-scaleFactor * 2); - } else if (position < 0) { - page.setTranslationX(scaleFactor * 2); - } - page.setScaleY(scaleFactor); - } else { - page.setScaleX(MIN_SCALE); - page.setScaleY(MIN_SCALE); - } - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt new file mode 100644 index 0000000..5b2d07e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BigImageActivity.kt @@ -0,0 +1,118 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.content.Context +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat +import androidx.viewpager.widget.PagerAdapter +import androidx.viewpager.widget.ViewPager +import androidx.viewpager.widget.ViewPager.OnPageChangeListener +import com.bumptech.glide.Glide +import com.casic.dcms.R +import com.casic.dcms.utils.StatusBarColorUtil +import com.gyf.immersionbar.ImmersionBar +import com.luck.picture.lib.photoview.PhotoView +import kotlinx.android.synthetic.main.activity_big_image.* +import kotlin.math.abs + +class BigImageActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_big_image) + setupTopBarLayout() + initEvent() + } + + private fun setupTopBarLayout() { + StatusBarColorUtil.setColor(this, ContextCompat.getColor(this, R.color.black)) + ImmersionBar.with(this).statusBarDarkFont(false).init() + leftBackView!!.setOnClickListener { v: View? -> finish() } + } + + @SuppressLint("SetTextI18n") + private fun initEvent() { + val index = intent.getIntExtra("index", 0) + val urls = intent.getStringArrayListExtra("images") + if (urls == null || urls.size == 0) { + return + } + pageNumberView!!.text = "(" + (index + 1) + "/" + urls.size + ")" + imagePagerView!!.adapter = BigImageAdapter(this, urls) + imagePagerView!!.currentItem = index + imagePagerView!!.offscreenPageLimit = 2 //设置预加载数量 + imagePagerView!!.addOnPageChangeListener(object : OnPageChangeListener { + override fun onPageScrolled( + position: Int, + positionOffset: Float, + positionOffsetPixels: Int + ) { + } + + override fun onPageSelected(position: Int) { + pageNumberView!!.text = "(" + (position + 1) + "/" + urls.size + ")" + } + + override fun onPageScrollStateChanged(state: Int) {} + }) + } + + internal inner class BigImageAdapter( + private val context: Context, + private val data: List + ) : PagerAdapter() { + override fun getCount(): Int { + return data.size + } + + override fun isViewFromObject(view: View, obj: Any): Boolean { + return view === obj + } + + override fun instantiateItem(container: ViewGroup, position: Int): Any { + val view = + LayoutInflater.from(context).inflate(R.layout.item_big_picture, container, false) + val photoView: PhotoView = view.findViewById(R.id.photoView) + Glide.with(context).load(data[position]).into(photoView) + photoView.scaleType = ImageView.ScaleType.CENTER_INSIDE + container.addView(view) + //点击大图取消预览 + photoView.setOnClickListener { v: View? -> finish() } + return view + } + + override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { + container.removeView(`object` as View) + } + } + + //设置切换动画 + class ZoomOutPageTransformer : ViewPager.PageTransformer { + override fun transformPage(page: View, position: Float) { + if (position <= 1) { + val scaleFactor = MIN_SCALE + (1 - abs(position)) * (MAX_SCALE - MIN_SCALE) + page.scaleX = scaleFactor + if (position > 0) { + page.translationX = -scaleFactor * 2 + } else if (position < 0) { + page.translationX = scaleFactor * 2 + } + page.scaleY = scaleFactor + } else { + page.scaleX = MIN_SCALE + page.scaleY = MIN_SCALE + } + } + + companion object { + //自由控制缩放比例 + private const val MAX_SCALE = 1f + private const val MIN_SCALE = 0.85f //0.85f + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java deleted file mode 100644 index fea0619..0000000 --- a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.java +++ /dev/null @@ -1,245 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.location.Location; -import android.text.TextUtils; -import android.view.View; -import android.widget.EditText; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.amap.api.services.core.LatLonPoint; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.ActionResultBean; -import com.casic.dcms.bean.BridgeConfigBean; -import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainSubmitView; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.IAddressListener; -import com.casic.dcms.utils.callback.ILocationListener; -import com.casic.dcms.widgets.SignInDialog; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; - -import butterknife.BindView; -import butterknife.OnClick; - -public class BridgeMaintainActivity extends BaseActivity implements View.OnClickListener, IMaintainSubmitView { - - private static final String TAG = "BridgeMaintainActivity"; - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.bridgeNameView) - TextView bridgeNameView; - @BindView(R.id.maintainView) - TextView maintainView; - @BindView(R.id.maintainDateView) - TextView maintainDateView; - @BindView(R.id.liablePersonView) - TextView liablePersonView; - @BindView(R.id.submitButton) - QMUIRoundButton submitButton; - //以下非必填 - @BindView(R.id.remarksView) - EditText remarksView; - - private String bridgeId = ""; - private SubmitMaintainPresenterImpl submitMaintainPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_bridge; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - startActivity(new Intent(context, MaintainRecordActivity.class)); - } - }); - } - - @Override - public void initData() { - submitMaintainPresenter = new SubmitMaintainPresenterImpl(this); - } - - @Override - public void initEvent() { - submitButton.setChangeAlphaWhenPress(true); - liablePersonView.setText(StringHelper.getUserAccount()); - liablePersonView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - - new Timer().schedule(new TimerTask() { - @Override - public void run() { - String systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()); - maintainDateView.post(new Runnable() { - @Override - public void run() { - maintainDateView.setText(systemDate); - maintainDateView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }); - } - }, 0, 1000); - } - - @OnClick({R.id.bridgeLayout, R.id.maintainContentLayout, R.id.submitButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.bridgeLayout: - List bridges = StringHelper.getBridgeBeanList(); - if (bridges.size() == 0) { - ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR); - return; - } - QMUIBottomSheet.BottomListSheetBuilder sheetBuilder = new QMUIBottomSheet.BottomListSheetBuilder(this); - sheetBuilder.setTitle("选择桥梁"); - for (BridgeConfigBean.BridgesBean bean : bridges) { - sheetBuilder.addItem(bean.getName()); - } - sheetBuilder.setGravityCenter(true).setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - bridgeId = String.valueOf(bridges.get(position).getId()); - bridgeNameView.setText(tag); - bridgeNameView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.maintainContentLayout: - new QMUIBottomSheet.BottomListSheetBuilder(this) - .setTitle("养护内容") - .addItem("日常养护,无异常") - .addItem("清除表面污垢") - .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") - .addItem("清除暴露钢筋的锈渍、恢复保护层") - .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") - .setGravityCenter(true) - .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() { - @Override - public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) { - dialog.dismiss(); - - maintainView.setText(tag); - maintainView.setTextColor(ContextCompat.getColor(context, R.color.textColor)); - } - }).build().show(); - break; - case R.id.submitButton: - //获取定位信息 - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - if (TextUtils.isEmpty(bridgeId)) { - ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING); - return; - } - String maintainContent = maintainView.getText().toString(); - if (TextUtils.isEmpty(maintainContent)) { - ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING); - return; - } - - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - LatLonPoint latLonPoint = new LatLonPoint(gcjToWgs[1], gcjToWgs[0]); - LocationHelper.antiCodingLocation(context, latLonPoint, new IAddressListener() { - @Override - public void onGetAddress(String address) { - SaveKeyValues.putValue("maintainAddress", address); - } - }); - //提交养护记录 - submitMaintainPresenter.onReadyRetrofitRequest(bridgeId, maintainContent, - maintainDateView.getText().toString(), - StringHelper.getUserBean().getId(), String.valueOf(gcjToWgs[0]), - String.valueOf(gcjToWgs[1]), - StringHelper.filterString(remarksView.getText().toString())); - } else { - ToastHelper.showToast("当前信号较弱,无法提交养护记录", ToastHelper.WARING); - } - } - }, true); - break; - default: - throw new IllegalStateException("Unexpected value: " + v.getId()); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainSubmitResult(ActionResultBean resultBean) { - String maintainAddress = (String) SaveKeyValues.getValue("maintainAddress", ""); - if (resultBean.isSuccess()) { - new SignInDialog.Builder() - .setContext(this) - .setTitle("桥梁养护记录提交成功") - .setAddress(maintainAddress.equals("") ? "详细位置解析失败" : maintainAddress) - .setOnDialogClickListener(new SignInDialog.OnDialogClickListener() { - @Override - public void onViewClick() { - startActivity(new Intent(context, MaintainRecordActivity.class)); - finish(); - } - }).build().show(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("操作失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (submitMaintainPresenter != null) { - submitMaintainPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt new file mode 100644 index 0000000..247ac7c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/BridgeMaintainActivity.kt @@ -0,0 +1,164 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.location.Location +import android.text.TextUtils +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.amap.api.services.core.LatLonPoint +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.ActionResultBean +import com.casic.dcms.mvp.presenter.SubmitMaintainPresenterImpl +import com.casic.dcms.mvp.view.IMaintainSubmitView +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.casic.dcms.widgets.SignInDialog +import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder +import kotlinx.android.synthetic.main.activity_bridge.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class BridgeMaintainActivity : BaseActivity(), IMaintainSubmitView { + + private lateinit var submitMaintainPresenter: SubmitMaintainPresenterImpl + private var bridgeId = "" + + override fun initLayoutView(): Int = R.layout.activity_bridge + + override fun setupTopBarLayout() { + topLayout.setTitle("路桥养护").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + topLayout.addRightImageButton(R.drawable.ic_more, 2).setOnClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + } + } + + override fun initData() { + submitMaintainPresenter = SubmitMaintainPresenterImpl(this) + } + + override fun initEvent() { + liablePersonView.text = StringHelper.getUserAccount() + liablePersonView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + Timer().schedule(object : TimerTask() { + override fun run() { + val systemDate = TimeOrDateUtil.timestampToDate(System.currentTimeMillis()) + maintainDateView.post { + maintainDateView.text = systemDate + maintainDateView.setTextColor( + ContextCompat.getColor(this@BridgeMaintainActivity, R.color.textColor) + ) + } + } + }, 0, 1000) + + bridgeLayout.setOnClickListener { + val bridges = StringHelper.getBridgeBeanList() + if (bridges.size == 0) { + ToastHelper.showToast("获取桥梁数据异常", ToastHelper.ERROR) + return@setOnClickListener + } + val sheetBuilder = BottomListSheetBuilder(this) + sheetBuilder.setTitle("选择桥梁") + for (bean in bridges) { + sheetBuilder.addItem(bean.name) + } + sheetBuilder.setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + bridgeId = bridges[position].id.toString() + bridgeNameView.text = tag + bridgeNameView.setTextColor( + ContextCompat.getColor(this, R.color.textColor) + ) + }.build().show() + } + + maintainContentLayout.setOnClickListener { + BottomListSheetBuilder(this) + .setTitle("养护内容") + .addItem("日常养护,无异常") + .addItem("清除表面污垢") + .addItem("修补混凝土空洞、破损、剥落和表面风化及裂缝") + .addItem("清除暴露钢筋的锈渍、恢复保护层") + .addItem("处理各种横、纵向构件的开裂、开焊和锈蚀") + .setGravityCenter(true) + .setOnSheetItemClickListener { dialog, itemView, position, tag -> + dialog.dismiss() + maintainView.text = tag + maintainView.setTextColor(ContextCompat.getColor(this, R.color.textColor)) + }.build().show() + } + + submitButton.setChangeAlphaWhenPress(true) + submitButton.setOnClickListener { + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + if (TextUtils.isEmpty(bridgeId)) { + ToastHelper.showToast("请先选择养护的桥梁", ToastHelper.WARING) + return + } + val maintainContent: String = maintainView.text.toString() + if (TextUtils.isEmpty(maintainContent)) { + ToastHelper.showToast("请选择养护的内容", ToastHelper.WARING) + return + } + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val latLonPoint = LatLonPoint(gcjToWgs[1], gcjToWgs[0]) + LocationHelper.antiCodingLocation( + this@BridgeMaintainActivity, + latLonPoint + ) { address -> SaveKeyValues.putValue("maintainAddress", address) } + //提交养护记录 + submitMaintainPresenter.onReadyRetrofitRequest( + bridgeId, + maintainContent, + maintainDateView.text.toString(), + StringHelper.getUserBean().id, + gcjToWgs[0].toString(), + gcjToWgs[1].toString(), + StringHelper.filterString(remarksView.text.toString()) + ) + } + }, true) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "养护记录签到中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainSubmitResult(resultBean: ActionResultBean) { + val maintainAddress = SaveKeyValues.getValue("maintainAddress", "") as String + if (resultBean.isSuccess) { + SignInDialog.Builder() + .setContext(this) + .setTitle("桥梁养护记录提交成功") + .setAddress(if (maintainAddress == "") "详细位置解析失败" else maintainAddress) + .setOnDialogClickListener { + startActivity(Intent(this, MaintainRecordActivity::class.java)) + finish() + }.build().show() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("操作失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + submitMaintainPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java deleted file mode 100644 index 9d8274e..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseCheckedDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_checked_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt new file mode 100644 index 0000000..651d2b3 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckedDetailActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_checked_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseCheckedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_checked_detail + + override fun setupTopBarLayout() { + topLayout!!.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView!!.text = data.caseid + caseTypeView!!.text = data.eorcName + caseLargeTypeView!!.text = data.casetypeName + caseSmallTypeView!!.text = data.casetypeDetailName + caseCommunityView!!.text = data.communityName + casePlaceView!!.text = StringHelper.filterString(data.fieldintro) + caseHandleView!!.text = if (data.processRemarks == "") "无" else data.processRemarks + caseSituationView!!.text = StringHelper.filterString(data.description) + + //核实图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView!!.adapter = imageAdapter + //九宫格点击事件 + casePicGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView!!.adapter = imageAdapter + //九宫格点击事件 + handleGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView!!.adapter = imageAdapter + //九宫格点击事件 + checkGridView!!.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView!!.visibility = View.VISIBLE + audioPlayerView!!.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView!!.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView!!.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView!!.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView!!.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java deleted file mode 100644 index 62ac8a5..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseStatusView) - TextView caseStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.checkGridView) - GridView checkGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - @BindView(R.id.handleRecordLayout) - RelativeLayout handleRecordLayout; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //核实图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处理图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //核查图片 - String checkImages = data.getFileIdCheck(); - if (!TextUtils.isEmpty(checkImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = checkImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - checkGridView.setAdapter(imageAdapter); - //九宫格点击事件 - checkGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleRecordLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleRecordLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt new file mode 100644 index 0000000..2f94e54 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseDetailActivity.kt @@ -0,0 +1,178 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleRecordLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //核实图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //处理图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //核查图片 + val checkImages = data.fileIdCheck + if (!TextUtils.isEmpty(checkImages)) { + val urls = ArrayList() + val split = checkImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + checkGridView.adapter = imageAdapter + //九宫格点击事件 + checkGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java deleted file mode 100644 index c59ef06..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseHandledDetailActivity extends BaseActivity implements View.OnClickListener, ICaseDetailView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_case_handled_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt new file mode 100644 index 0000000..66dd409 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandledDetailActivity.kt @@ -0,0 +1,159 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_handled_detail.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseHandledDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_case_handled_detail + } + + override fun setupTopBarLayout() { + topLayout.setTitle("已办案卷").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java deleted file mode 100644 index 93f74c0..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.CaseListResultAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseListResultBean; -import com.casic.dcms.mvp.presenter.CaseListPresenterImpl; -import com.casic.dcms.mvp.view.ICaseListView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseListResultActivity extends BaseActivity implements ICaseListView { - - private static final String TAG = "CaseListResultActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.caseRecyclerView) - RecyclerView caseRecyclerView; - - private CaseListPresenterImpl caseListPresenter; - private CaseListResultAdapter adapter; - private String typeCode; - private String typeDetailCode; - private String caseState; - private String startTime; - private String endTime; - private String eorc; - private int pageIndex = 1; - /** - * 临时存储网络请求到的数据 - */ - private List dataBeans = new ArrayList<>(); - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_case_list; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - caseListPresenter = new CaseListPresenterImpl(this); - weakReferenceHandler = new WeakReferenceHandler(this); - eorc = getIntent().getStringExtra("eorc"); - typeCode = getIntent().getStringExtra("typeCode"); - typeDetailCode = getIntent().getStringExtra("typeDetailCode"); - caseState = getIntent().getStringExtra("caseState"); - startTime = getIntent().getStringExtra("startTime"); - endTime = getIntent().getStringExtra("endTime"); - //加载第一页 - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - - @Override - public void initEvent() { - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, "0", pageIndex); - } - }); - } - - /** - * 弱应用Handler,防止内存泄漏 - */ - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CaseListResultActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CaseListResultActivity resultActivity = reference.get(); - if (msg.what == 20210425) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到符合您规定条件的案卷", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new CaseListResultAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.caseRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.caseRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.caseRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new CaseListResultAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(resultActivity, CaseDetailActivity.class); - intent.putExtra("id", resultActivity.dataBeans.get(position).getId()); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainCaseListData(CaseListResultBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - //更新RecyclerView - weakReferenceHandler.sendEmptyMessage(20210425); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseListPresenter != null) { - caseListPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt new file mode 100644 index 0000000..5879f81 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.kt @@ -0,0 +1,162 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.CaseListResultAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseListResultBean +import com.casic.dcms.mvp.presenter.CaseListPresenterImpl +import com.casic.dcms.mvp.view.ICaseListView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_list.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.* + +class CaseListResultActivity : BaseActivity(), ICaseListView { + + private lateinit var caseListPresenter: CaseListPresenterImpl + private var adapter: CaseListResultAdapter? = null + private var typeCode: String? = null + private var typeDetailCode: String? = null + private var caseState: String? = null + private var startTime: String? = null + private var endTime: String? = null + private var eorc: String? = null + private var pageIndex = 1 + + /** + * 临时存储网络请求到的数据 + */ + private var dataBeans: MutableList = ArrayList() + private var isRefresh = false + private var isLoadMore = false + private var weakReferenceHandler: WeakReferenceHandler? = null + + override fun initLayoutView(): Int = R.layout.activity_case_list + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查询结果").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + caseListPresenter = CaseListPresenterImpl(this) + weakReferenceHandler = WeakReferenceHandler(this) + eorc = intent.getStringExtra("eorc") + typeCode = intent.getStringExtra("typeCode") + typeDetailCode = intent.getStringExtra("typeDetailCode") + caseState = intent.getStringExtra("caseState") + startTime = intent.getStringExtra("startTime") + endTime = intent.getStringExtra("endTime") + //加载第一页 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + + override fun initEvent() { + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + caseListPresenter.onReadyRetrofitRequest( + eorc, typeCode, typeDetailCode, caseState, startTime, + endTime, "0", pageIndex + ) + } + } + + /** + * 弱应用Handler,防止内存泄漏 + */ + private class WeakReferenceHandler(activity: CaseListResultActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210425) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到符合您规定条件的案卷", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + CaseListResultAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.caseRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.caseRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.caseRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener { position -> + val intent = Intent(resultActivity, CaseDetailActivity::class.java) + intent.putExtra("id", resultActivity.dataBeans[position].id) + resultActivity.startActivity(intent) + } + } + } + } + } + + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "案卷查询中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainCaseListData(resultBean: CaseListResultBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + //更新RecyclerView + weakReferenceHandler!!.sendEmptyMessage(20210425) + } + } + + override fun onDestroy() { + super.onDestroy() + caseListPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java deleted file mode 100644 index 371bb34..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.graphics.Rect; -import android.view.View; - -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.DefaultItemAnimator; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ProcessLineAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseProcessBean; -import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl; -import com.casic.dcms.mvp.view.ICaseProcessView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.TimeLineDecoration; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CaseProcessActivity extends BaseActivity implements ICaseProcessView { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.processRecyclerView) - RecyclerView processRecyclerView; - private CaseProcessPresenterImpl caseProcessPresenter; - private List dataBeans = new ArrayList<>(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_process; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - String processId = getIntent().getStringExtra("processId"); - caseProcessPresenter = new CaseProcessPresenterImpl(this); - caseProcessPresenter.onReadyRetrofitRequest(processId); - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后"); - } - - @Override - public void obtainCaseProcessData(CaseProcessBean resultBean) { - if (resultBean.isSuccess()) { - //将数据逆序加载,便于查看 - int size = resultBean.getData().size(); - for (int i = 0; i < size; i++) { - dataBeans.add(i, resultBean.getData().get(size - 1 - i)); - } - ProcessLineAdapter adapter = new ProcessLineAdapter(this, dataBeans); - processRecyclerView.setLayoutManager(new LinearLayoutManager(this)); - processRecyclerView.setHasFixedSize(true); - processRecyclerView.setNestedScrollingEnabled(false); - processRecyclerView.setItemAnimator(new DefaultItemAnimator()); - TimeLineDecoration decoration = new TimeLineDecoration(this) - .setLineColor(R.color.lightGray) - .setLineWidth(1) - .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) - .setMarkerColor(R.color.lightGray) - .setMarkerRadius(10) - .setBeginMarkerRadius(10) - .setBeginMarker(R.drawable.begin_marker) - .setCallback(new TimeLineDecoration.TimeLineAdapter() { - - @Override - public boolean isShowDivider(int position) { - return super.isShowDivider(position); - } - - @Nullable - @Override - public Rect getRect(int position) { - //item内间距 - return new Rect(QMUIDisplayHelper.dp2px(context, 30), QMUIDisplayHelper.dp2px(context, 10), - 0, 0); - } - - @Override - public int getTimeLineType(int position) { - if (position == 0) return TimeLineDecoration.BEGIN; - else if (position == adapter.getItemCount() - 1) - return TimeLineDecoration.END_FULL; - else return TimeLineDecoration.NORMAL; - } - }); - processRecyclerView.addItemDecoration(decoration); - processRecyclerView.setAdapter(adapter); - } - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseProcessPresenter != null) { - caseProcessPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt new file mode 100644 index 0000000..b3368e6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseProcessActivity.kt @@ -0,0 +1,98 @@ +package com.casic.dcms.ui + +import android.graphics.Rect +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DefaultItemAnimator +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.ProcessLineAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseProcessBean +import com.casic.dcms.mvp.presenter.CaseProcessPresenterImpl +import com.casic.dcms.mvp.view.ICaseProcessView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.TimeLineDecoration +import com.casic.dcms.utils.TimeLineDecoration.TimeLineAdapter +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.activity_case_process.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseProcessActivity : BaseActivity(), ICaseProcessView { + + private lateinit var caseProcessPresenter: CaseProcessPresenterImpl + private val dataBeans: MutableList = ArrayList() + + override fun initLayoutView(): Int = R.layout.activity_case_process + + override fun setupTopBarLayout() { + topLayout!!.setTitle("处理记录").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + override fun initEvent() { + val processId = intent.getStringExtra("processId") + caseProcessPresenter = CaseProcessPresenterImpl(this) + caseProcessPresenter.onReadyRetrofitRequest(processId) + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "获取案卷流程记录中,请稍后") + } + + override fun obtainCaseProcessData(resultBean: CaseProcessBean) { + if (resultBean.isSuccess) { + //将数据逆序加载,便于查看 + val size = resultBean.data.size + for (i in 0 until size) { + dataBeans.add(i, resultBean.data[size - 1 - i]) + } + val adapter = ProcessLineAdapter(this, dataBeans) + processRecyclerView!!.layoutManager = LinearLayoutManager(this) + processRecyclerView!!.setHasFixedSize(true) + processRecyclerView!!.isNestedScrollingEnabled = false + processRecyclerView!!.itemAnimator = DefaultItemAnimator() + val decoration = TimeLineDecoration(this) + .setLineColor(R.color.lightGray) + .setLineWidth(1f) + .setLeftDistance(QMUIDisplayHelper.dp2px(this, 9)) + .setMarkerColor(R.color.lightGray) + .setMarkerRadius(10f) + .setBeginMarkerRadius(10f) + .setBeginMarker(R.drawable.begin_marker) + .setCallback(object : TimeLineAdapter() { + override fun getRect(position: Int): Rect? { + //item内间距 + return Rect( + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 30), + QMUIDisplayHelper.dp2px(this@CaseProcessActivity, 10), + 0, + 0 + ) + } + + override fun getTimeLineType(position: Int): Int { + return if (position == 0) TimeLineDecoration.BEGIN else if (position == adapter.itemCount - 1) TimeLineDecoration.END_FULL else TimeLineDecoration.NORMAL + } + }) + processRecyclerView!!.addItemDecoration(decoration) + processRecyclerView!!.adapter = adapter + } + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷处理记录失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseProcessPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java deleted file mode 100644 index 496edba..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.bumptech.glide.Glide; -import com.bumptech.glide.request.RequestOptions; -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.JzExoMedia; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.AudioPlayerView; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; -import cn.jzvd.Jzvd; -import cn.jzvd.JzvdStd; - -public class CaseVerifiedDetailActivity extends BaseActivity implements ICaseDetailView, View.OnClickListener { - - private Context context = this; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.caseHandleView) - TextView caseHandleView; - @BindView(R.id.caseStartTimeView) - TextView caseStartTimeView; - @BindView(R.id.caseEndTimeView) - TextView caseEndTimeView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.audioPlayerView) - AudioPlayerView audioPlayerView; - @BindView(R.id.videoPlayerView) - JzvdStd videoPlayerView; - - private CaseDetailPresenterImpl caseDetailPresenter; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - - @Override - public int initLayoutView() { - return R.layout.activity_case_verified_detail; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseHandleView.setText(data.getProcessRemarks().equals("") ? "无" : data.getProcessRemarks()); - caseStartTimeView.setText(data.getCreateTime()); - caseEndTimeView.setText(data.getNodeLimittime()); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //图片 - String images = data.getFileIdVerify(); - if (!TextUtils.isEmpty(images)) { - ArrayList urls = new ArrayList<>(); - String[] split = images.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //音频 - String audioFile = data.getAudioIdVerify(); - if (!TextUtils.isEmpty(audioFile)) { - audioPlayerView.setVisibility(View.VISIBLE); - audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)); - } - - //视频 - String videoFile = data.getVideoIdVerify(); - if (!TextUtils.isEmpty(videoFile)) { - videoPlayerView.setVisibility(View.VISIBLE); - String videoUrl = StringHelper.appendCompleteURL(videoFile); - videoPlayerView.setUp(videoUrl, StringHelper.filterString(data.getDescription()), Jzvd.SCREEN_NORMAL, JzExoMedia.class); - //设置第一帧为封面 - Glide.with(this) - .setDefaultRequestOptions(new RequestOptions().frame(4000000)) - .load(videoUrl) - .into(videoPlayerView.posterImageView); - } - } - } - - @OnClick({R.id.locationMapView}) - @Override - public void onClick(View v) { - if (v.getId() == R.id.locationMapView) { - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - if (audioPlayerView != null) { - audioPlayerView.release(); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @Override - public void onBackPressed() { - if (Jzvd.backPress()) { - return; - } - super.onBackPressed(); - } - - @Override - protected void onPause() { - super.onPause(); - Jzvd.releaseAllVideos(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt new file mode 100644 index 0000000..f59e863 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifiedDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import cn.jzvd.Jzvd +import com.bumptech.glide.Glide +import com.bumptech.glide.request.RequestOptions +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.JzExoMedia +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_case_verified_detail.* +import kotlinx.android.synthetic.main.include_case_base_layout_read_only.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class CaseVerifiedDetailActivity : BaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int = R.layout.activity_case_verified_detail + + override fun setupTopBarLayout() { + topLayout.setTitle("案卷详情").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseHandleView.text = if (data.processRemarks == "") "无" else data.processRemarks + caseStartTimeView.text = data.createTime + caseEndTimeView.text = data.nodeLimittime + caseSituationView.text = StringHelper.filterString(data.description) + + //图片 + val images = data.fileIdVerify + if (!TextUtils.isEmpty(images)) { + val urls = ArrayList() + val split = images.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //音频 + val audioFile = data.audioIdVerify + if (!TextUtils.isEmpty(audioFile)) { + audioPlayerView.visibility = View.VISIBLE + audioPlayerView.setAudioUrl(StringHelper.appendCompleteURL(audioFile)) + } + + //视频 + val videoFile = data.videoIdVerify + if (!TextUtils.isEmpty(videoFile)) { + videoPlayerView.visibility = View.VISIBLE + val videoUrl = StringHelper.appendCompleteURL(videoFile) + videoPlayerView.setUp( + videoUrl, + StringHelper.filterString(data.description), + Jzvd.SCREEN_NORMAL, + JzExoMedia::class.java + ) + //设置第一帧为封面 + Glide.with(this) + .setDefaultRequestOptions(RequestOptions().frame(4000000)) + .load(videoUrl) + .into(videoPlayerView.posterImageView) + } + } + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + if (audioPlayerView != null) { + audioPlayerView.release() + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onBackPressed() { + if (Jzvd.backPress()) { + return + } + super.onBackPressed() + } + + override fun onPause() { + super.onPause() + Jzvd.releaseAllVideos() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java deleted file mode 100644 index da49f36..0000000 --- a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.java +++ /dev/null @@ -1,222 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.RecordListAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CleanRecordBean; -import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl; -import com.casic.dcms.mvp.view.ICleanToiletRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class CleanResultListActivity extends BaseCaseActivity implements ICleanToiletRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private RecordListAdapter adapter; - private List dataBeans = new ArrayList<>(); - private WeakReferenceHandler weakReferenceHandler; - private CleanRecordPresenterImpl recordPresenter; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - public int initLayoutView() { - return R.layout.activity_clean_list; - } - - @Override - protected String setTitleName() { - return "保洁作业记录"; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new CleanRecordPresenterImpl(this); - } - - @Override - public void initEvent() { - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", "", "", pageIndex); - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(CleanResultListActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest(StringHelper.getUserBean().getId(), "", - "", "", pageIndex); - } - }); - } - - @Override - public void obtainCleanRecordResult(CleanRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210601); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(CleanResultListActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - CleanResultListActivity resultActivity = reference.get(); - if (msg.what == 20210601) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到您的保洁工作记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new RecordListAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - resultActivity.adapter.setOnItemClickListener(new RecordListAdapter.OnItemClickListener() { - @Override - public void onClick(int position) { - CleanRecordBean.DataBean.RowsBean rowsBean = resultActivity.dataBeans.get(position); - - Intent intent = new Intent(resultActivity, WorkerOnMapActivity.class); - intent.putExtra("userName", rowsBean.getUserName()); - intent.putExtra("createTime", rowsBean.getCreateTime()); - intent.putExtra("toiletName", rowsBean.getToiletName()); - String dataLng = rowsBean.getLng(); - if (TextUtils.isEmpty(dataLng)) { - ToastHelper.showToast("经度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lng", Double.parseDouble(dataLng)); - String dataLat = rowsBean.getLat(); - if (TextUtils.isEmpty(dataLat)) { - ToastHelper.showToast("纬度异常", ToastHelper.ERROR); - return; - } - intent.putExtra("lat", Double.parseDouble(dataLat)); - resultActivity.startActivity(intent); - } - }); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt new file mode 100644 index 0000000..c43a24c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/CleanResultListActivity.kt @@ -0,0 +1,184 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.RecordListAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CleanRecordBean +import com.casic.dcms.mvp.presenter.CleanRecordPresenterImpl +import com.casic.dcms.mvp.view.ICleanToiletRecordView +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import kotlinx.android.synthetic.main.activity_clean_list.* +import java.lang.ref.WeakReference +import java.util.* + +class CleanResultListActivity : BaseCaseActivity(), ICleanToiletRecordView { + + private lateinit var recordPresenter: CleanRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var adapter: RecordListAdapter? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun initLayoutView(): Int = R.layout.activity_clean_list + + override fun setTitleName(): String { + return "保洁作业记录" + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = CleanRecordPresenterImpl(this) + } + + override fun initEvent() { + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, + "", + "", + "", + pageIndex + ) + calendarView!!.setOnClickListener { v -> + DatePopupWindow.Builder( + this@CleanResultListActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView!!.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + startDate, endDate, pageIndex + ) + }.builder() + } + refreshLayout!!.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + refreshLayout!!.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest( + StringHelper.getUserBean().id, "", + "", "", pageIndex + ) + } + } + + override fun obtainCleanRecordResult(resultBean: CleanRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout!!.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout!!.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210601) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: CleanResultListActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210601) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView!!.show("抱歉,没有查到您的保洁工作记录", null) + } else { + resultActivity.emptyView!!.hide() + resultActivity.adapter = + RecordListAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView!!.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView!!.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView!!.adapter = resultActivity.adapter + resultActivity.adapter!!.setOnItemClickListener(RecordListAdapter.OnItemClickListener { position -> + val rowsBean = resultActivity.dataBeans[position] + val intent = Intent(resultActivity, WorkerOnMapActivity::class.java) + intent.putExtra("userName", rowsBean.userName) + intent.putExtra("createTime", rowsBean.createTime) + intent.putExtra("toiletName", rowsBean.toiletName) + val dataLng = rowsBean.lng + if (TextUtils.isEmpty(dataLng)) { + ToastHelper.showToast("经度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lng", dataLng.toDouble()) + val dataLat = rowsBean.lat + if (TextUtils.isEmpty(dataLat)) { + ToastHelper.showToast("纬度异常", ToastHelper.ERROR) + return@OnItemClickListener + } + intent.putExtra("lat", dataLat.toDouble()) + resultActivity.startActivity(intent) + }) + } + } + } + } + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java deleted file mode 100644 index ecdb995..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.GridLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.AnalysisRecycleAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.TimeOrDateUtil; -import com.casic.dcms.utils.ToastHelper; -import com.jzxiang.pickerview.TimePickerDialog; -import com.jzxiang.pickerview.data.Type; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; -import butterknife.OnClick; - -/** - * @author : Pengxh - * @time : 2021/4/15 16:03 - * @email : 290677893@qq.com - **/ -public class DataAnalysisActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DataAnalysisActivity"; - private Context context = this; - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.startDateView) - TextView startDateView; - @BindView(R.id.selectStartDateView) - ImageView selectStartDateView; - @BindView(R.id.endDateView) - TextView endDateView; - @BindView(R.id.selectEndDateView) - ImageView selectEndDateView; - @BindView(R.id.analysisRecyclerView) - RecyclerView analysisRecyclerView; - - @Override - public int initLayoutView() { - return R.layout.activity_case_analysis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - AnalysisRecycleAdapter adapter = new AnalysisRecycleAdapter(this); - analysisRecyclerView.setLayoutManager(new GridLayoutManager(this, 3)); - analysisRecyclerView.setAdapter(adapter); - adapter.setOnGridItemClickListener(new AnalysisRecycleAdapter.OnGridItemClickListener() { - @Override - public void onClick(int position) { - Intent intent = new Intent(); - switch (position) { - case 0: - intent.setClass(context, EventSourceActivity.class); - startActivity(intent); - break; - case 1: - ToastHelper.showToast("案卷状态", ToastHelper.INFO); - break; - case 2: - intent.setClass(context, HighEventListActivity.class); - startActivity(intent); - break; - case 3: - ToastHelper.showToast("街道统计", ToastHelper.INFO); - break; - case 4: - ToastHelper.showToast("处理统计", ToastHelper.INFO); - break; - case 5: - ToastHelper.showToast("趋势分析", ToastHelper.INFO); - break; - default: - break; - } -// startActivity(intent); - } - }); - } - - @Override - public void initEvent() { - - } - - @OnClick({R.id.selectStartDateView, R.id.selectEndDateView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.selectStartDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择起始时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - startDateView.setText(date); - SaveKeyValues.putValue("begTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - case R.id.selectEndDateView: - new TimePickerDialog.Builder().setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) - .setTitleStringId("请选择结束时间") - .setWheelItemTextSize(16) - .setCyclic(false) - .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) - .setMaxMillseconds(System.currentTimeMillis()) - .setType(Type.YEAR_MONTH_DAY) - .setCallBack((timePickerView, millSeconds) -> { - String date = TimeOrDateUtil.timestampToDate(millSeconds); - - endDateView.setText(date); - SaveKeyValues.putValue("endTime", date); - }).build().show(getSupportFragmentManager(), "year_month_day"); - break; - default: - break; - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt new file mode 100644 index 0000000..32c1c12 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DataAnalysisActivity.kt @@ -0,0 +1,88 @@ +package com.casic.dcms.ui + +import android.content.Intent +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.GridLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.AnalysisRecycleAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.TimeOrDateUtil +import com.casic.dcms.utils.ToastHelper +import com.jzxiang.pickerview.TimePickerDialog +import com.jzxiang.pickerview.data.Type +import kotlinx.android.synthetic.main.activity_case_analysis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/15 16:03 + * @email : 290677893@qq.com + */ +class DataAnalysisActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_case_analysis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("统计分析").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val adapter = AnalysisRecycleAdapter(this) + analysisRecyclerView!!.layoutManager = GridLayoutManager(this, 3) + analysisRecyclerView!!.adapter = adapter + adapter.setOnGridItemClickListener { position -> + val intent = Intent() + when (position) { + 0 -> { + intent.setClass(this, EventSourceActivity::class.java) + startActivity(intent) + } + 1 -> ToastHelper.showToast("案卷状态", ToastHelper.INFO) + 2 -> { + intent.setClass(this, HighEventListActivity::class.java) + startActivity(intent) + } + 3 -> ToastHelper.showToast("街道统计", ToastHelper.INFO) + 4 -> ToastHelper.showToast("处理统计", ToastHelper.INFO) + 5 -> ToastHelper.showToast("趋势分析", ToastHelper.INFO) + } + } + } + + override fun initEvent() { + selectStartDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择起始时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + startDateView!!.text = date + SaveKeyValues.putValue("begTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + selectEndDateView.setOnClickListener { + TimePickerDialog.Builder() + .setThemeColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + .setTitleStringId("请选择结束时间") + .setWheelItemTextSize(16) + .setCyclic(false) + .setMinMillseconds(System.currentTimeMillis() - Constant.FIVE_YEARS) + .setMaxMillseconds(System.currentTimeMillis()) + .setType(Type.YEAR_MONTH_DAY) + .setCallBack { timePickerView: TimePickerDialog?, millSeconds: Long -> + val date = TimeOrDateUtil.timestampToDate(millSeconds) + endDateView!!.text = date + SaveKeyValues.putValue("endTime", date) + }.build().show(supportFragmentManager, "year_month_day") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java deleted file mode 100644 index cdffee7..0000000 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.casic.dcms.ui; - -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.data.ServiceFeatureTable; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.layers.FeatureLayer; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.Arrays; - -import butterknife.BindView; -import butterknife.OnClick; - -public class DisplayMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "DisplayMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private double lng, lat; - - @Override - public int initLayoutView() { - return R.layout.activity_gis; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - String caseType = getIntent().getStringExtra("caseType"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - //社区 (ID: 13) - ServiceFeatureTable communityFeatureTable = ArcGisMapCreator.createGridFeatureTable(); - communityFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer communityLayer = new FeatureLayer(communityFeatureTable); - if ("部件".equals(caseType)) {//部件点图层 (ID: 2) - ServiceFeatureTable pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点"); - pointFeatureTable.setFeatureRequestMode(ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE); - FeatureLayer pointLayer = new FeatureLayer(pointFeatureTable); - arcGISMap.getOperationalLayers().addAll(Arrays.asList(communityLayer, pointLayer)); - } - mapView.setMap(arcGISMap); - } - - @Override - public void initEvent() { - /** - * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 - */ - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 2800);//标注到指定经纬度并放大地图显示 - - //添加普通小圆点Marker -// addSimpleMarker(point); - - //添加图片Marker - addPictureMarker(point); - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.location_verify); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setHeight(24); - pictureMarker.setWidth(24); - //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 - pictureMarker.setOffsetY(12); - pictureMarker.loadAsync(); - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt new file mode 100644 index 0000000..c8f76c7 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.kt @@ -0,0 +1,132 @@ +package com.casic.dcms.ui + +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.LocationHelper +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.data.ServiceFeatureTable +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.layers.FeatureLayer +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import kotlinx.android.synthetic.main.activity_gis.* +import kotlinx.android.synthetic.main.include_top_bar.* + +class DisplayMapActivity : BaseActivity() { + + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_gis + + override fun setupTopBarLayout() { + topLayout!!.setTitle("位置查看").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener { finish() } + } + + override fun initData() { + val caseType = intent.getStringExtra("caseType") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + + //社区 (ID: 13) + val communityFeatureTable = ArcGisMapCreator.createGridFeatureTable() + communityFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val communityLayer = FeatureLayer(communityFeatureTable) + if ("部件" == caseType) { //部件点图层 (ID: 2) + val pointFeatureTable = ArcGisMapCreator.createOtherFeatureTable("部件点") + pointFeatureTable.featureRequestMode = + ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_NO_CACHE + val pointLayer = FeatureLayer(pointFeatureTable) + arcGISMap.operationalLayers.addAll(listOf(communityLayer, pointLayer)) + } + mapView!!.map = arcGISMap + /** + * [116.598359, 28.247870, 0.000000, NaN] SR: 4326 + */ + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 2800.0) //标注到指定经纬度并放大地图显示 + //添加图片Marker + addPictureMarker(point) + } + + override fun initEvent() { + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val point = + Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(point) + mapView!!.setViewpointCenterAsync(point, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.location_verify) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.height = 24f + pictureMarker.width = 24f + //The image used for the symbol has a transparent buffer around it, so the offset is not simply height/2 + pictureMarker.offsetY = 12f + pictureMarker.loadAsync() + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java deleted file mode 100644 index f09c0aa..0000000 --- a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:24 - * @email : 290677893@qq.com - **/ -public class EventSourceActivity extends BaseActivity { - - private static final String TAG = EventSourceActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_event_resource; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt new file mode 100644 index 0000000..4e5aa34 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/EventSourceActivity.kt @@ -0,0 +1,51 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_event_resource.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:24 + * @email : 290677893@qq.com + */ +class EventSourceActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_event_resource + + override fun setupTopBarLayout() { + topLayout!!.setTitle("问题来源").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val TAG = EventSourceActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java deleted file mode 100644 index 6bf238a..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 13:05 - * @email : 290677893@qq.com - **/ -public class HelpfulActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - - @Override - public int initLayoutView() { - return R.layout.activity_help; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt new file mode 100644 index 0000000..0cf58d6 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HelpfulActivity.kt @@ -0,0 +1,26 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 13:05 + * @email : 290677893@qq.com + */ +class HelpfulActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_help + + override fun setupTopBarLayout() { + topLayout!!.setTitle("帮助中心").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() {} + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java deleted file mode 100644 index 374a239..0000000 --- a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.ExcelFragment; -import com.casic.dcms.ui.fragment.PieChartFragment; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 8:44 - * @email : 290677893@qq.com - **/ -public class HighEventListActivity extends BaseActivity { - - private static final String TAG = HighEventListActivity.class.getSimpleName(); - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.eventTabLayout) - TabLayout eventTabLayout; - @BindView(R.id.eventViewPager) - NoScrollViewPager eventViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_high_event; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - - } - - @Override - public void initEvent() { - List fragmentList = new ArrayList<>(); - fragmentList.add(ExcelFragment.newInstance(TAG)); - fragmentList.add(PieChartFragment.newInstance(TAG)); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CHART_PAGE_TITLES, fragmentList); - eventViewPager.setAdapter(adapter); - //绑定TabLayout - eventTabLayout.setupWithViewPager(eventViewPager); - LinearLayout linearLayout = (LinearLayout) eventTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt new file mode 100644 index 0000000..5144f15 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/HighEventListActivity.kt @@ -0,0 +1,53 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.ExcelFragment +import com.casic.dcms.ui.fragment.PieChartFragment +import com.casic.dcms.utils.Constant +import kotlinx.android.synthetic.main.activity_high_event.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 8:44 + * @email : 290677893@qq.com + */ +class HighEventListActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_high_event + + override fun setupTopBarLayout() { + topLayout!!.setTitle("高发问题").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(ExcelFragment.newInstance(TAG)) + fragmentList.add(PieChartFragment.newInstance(TAG)) + val adapter = + SubViewPagerAdapter(supportFragmentManager, Constant.CHART_PAGE_TITLES, fragmentList) + eventViewPager!!.adapter = adapter + //绑定TabLayout + eventTabLayout!!.setupWithViewPager(eventViewPager) + val linearLayout = eventTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() { + + } + + companion object { + private val TAG = HighEventListActivity::class.java.simpleName + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java b/app/src/main/java/com/casic/dcms/ui/LoginActivity.java deleted file mode 100644 index 238c397..0000000 --- a/app/src/main/java/com/casic/dcms/ui/LoginActivity.java +++ /dev/null @@ -1,261 +0,0 @@ -package com.casic.dcms.ui; - - -import android.content.Intent; -import android.text.Editable; -import android.text.TextUtils; -import android.text.TextWatcher; -import android.view.View; -import android.view.inputmethod.EditorInfo; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.LoginResultBean; -import com.casic.dcms.bean.PublicKeyBean; -import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl; -import com.casic.dcms.mvp.presenter.LoginPresenterImpl; -import com.casic.dcms.mvp.view.IAuthenticateView; -import com.casic.dcms.mvp.view.ILoginInView; -import com.casic.dcms.utils.AuthenticationHelper; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.RSAUtils; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.InputDialog; -import com.google.android.material.textfield.TextInputLayout; -import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton; -import com.qmuiteam.qmui.util.QMUIStatusBarHelper; -import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton; - -import java.security.PublicKey; -import java.util.Objects; - -import butterknife.BindView; -import butterknife.OnClick; - -public class LoginActivity extends BaseActivity implements View.OnClickListener, IAuthenticateView, ILoginInView { - - private static final String TAG = "LoginActivity"; - - @BindView(R.id.userNameView) - EditText userNameView; - @BindView(R.id.inputLayout) - TextInputLayout inputLayout; - @BindView(R.id.userPasswordView) - EditText userPasswordView; - @BindView(R.id.loginButton) - QMUIRoundButton loginButton; - @BindView(R.id.rememberPasswordView) - CheckBox rememberPasswordView; - @BindView(R.id.autoLoginView) - CheckBox autoLoginView; - @BindView(R.id.changeServerConfigButton) - QMUIAlphaImageButton changeServerConfigButton; - - private AuthenticatePresenterImpl authenticatePresenter; - private LoginPresenterImpl loginPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_login; - } - - @Override - protected void setupTopBarLayout() { - //设置状态栏黑色字体图标 - QMUIStatusBarHelper.setStatusBarLightMode(this); - } - - @Override - public void initData() { - String userAccount = StringHelper.getUserAccount(); - String userPassword = (String) SaveKeyValues.getValue("userPassword", ""); - userNameView.setText(userAccount); - userPasswordView.setText(userPassword); - if (!TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword)) { - rememberPasswordView.setChecked(true); - } else { - rememberPasswordView.setChecked(false); - } - rememberPasswordView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (!isChecked) { - try { - SaveKeyValues.removeKey("userPassword"); - } catch (NullPointerException e) { - e.printStackTrace(); - } - } - } - }); - } - - @Override - public void initEvent() { - loginButton.setChangeAlphaWhenPress(true); - changeServerConfigButton.setChangeAlphaWhenPress(true); - authenticatePresenter = new AuthenticatePresenterImpl(this); - loginPresenter = new LoginPresenterImpl(this); - EditText editText = Objects.requireNonNull(inputLayout.getEditText()); - editText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (s.toString().trim().length() > 12) { - inputLayout.setError("密码长度超出限制"); - } else { - inputLayout.setError(null); - } - } - }); - //点击输入法键盘"完成" - editText.setOnEditorActionListener((v, actionId, event) -> { - if (actionId == EditorInfo.IME_ACTION_DONE) { - authenticatePresenter.onReadyRetrofitRequest(); - return true; - } - return false; - }); - } - - @OnClick({R.id.loginButton, R.id.changeServerConfigButton}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.loginButton: - //验证公钥 - authenticatePresenter.onReadyRetrofitRequest(); - break; - case R.id.changeServerConfigButton: - new InputDialog.Builder() - .setContext(this) - .setTitle("修改服务器地址和端口") - .setOnDialogClickListener(new InputDialog.OnDialogClickListener() { - @Override - public void onConfirmClick(String serverValue, String portValue) { - if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { - String serverConfig = "http:" + serverValue + ":" + portValue; - SaveKeyValues.putValue(Constant.IP_KEY, serverConfig); - ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS); - } - } - - @Override - public void onCancelClick() { - - } - }).build().show(); - break; - default: - break; - } - } - - @Override - protected void onResume() { - super.onResume(); - //自动登录 - boolean autoLogin = (boolean) SaveKeyValues.getValue("autoLogin", false); - autoLoginView.setChecked(autoLogin); - if (autoLogin) { - authenticatePresenter.onReadyRetrofitRequest(); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "登录中,请稍后"); - } - - @Override - public void authenticateResult(PublicKeyBean result) { - if (result.isSuccess()) { - String keyString = result.getData().getPublicKey(); - AuthenticationHelper.savePublicKey(keyString); - - PublicKey publicKey = RSAUtils.keyStrToPublicKey(keyString); - String account = userNameView.getText().toString(); - String userPassword = userPasswordView.getText().toString(); - if (autoLoginView.isChecked()) { - SaveKeyValues.putValue("autoLogin", true); - } else { - SaveKeyValues.putValue("autoLogin", false); - } - if (TextUtils.isEmpty(account)) { - ToastHelper.showToast("用户名不能为空", ToastHelper.WARING); - return; - } - //判断是否是手机号,先区分是手机号还是账号 - if (account.startsWith("1")) { - if (!StringHelper.isPhoneNumber(account)) { - ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING); - return; - } - } - if (TextUtils.isEmpty(userPassword)) { - ToastHelper.showToast("密码不能为空", ToastHelper.WARING); - return; - } - if (rememberPasswordView.isChecked()) { - StringHelper.saveUserAccount(account); - SaveKeyValues.putValue("userPassword", userPassword); - } - String dataByPublicKey = RSAUtils.encryptDataByPublicKey(userPassword.getBytes(), publicKey); - //登录并获取Token,POST请求 - loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("登录失败", ToastHelper.ERROR); - } - - @Override - public void obtainLoginResult(LoginResultBean result) { - String token = result.getData().getToken(); - if (!TextUtils.isEmpty(token)) { - //获取用户信息 - AuthenticationHelper.saveToken(token); - //验证成功登录 - startActivity(new Intent(this, MainActivity.class)); - finish(); - } - } - - @Override - public void loginFail() { - ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (authenticatePresenter != null) { - authenticatePresenter.disposeRetrofitRequest(); - } - if (loginPresenter != null) { - loginPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt new file mode 100644 index 0000000..d2425dc --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/LoginActivity.kt @@ -0,0 +1,179 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.text.Editable +import android.text.TextUtils +import android.text.TextWatcher +import android.view.KeyEvent +import android.view.inputmethod.EditorInfo +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.bean.LoginResultBean +import com.casic.dcms.bean.PublicKeyBean +import com.casic.dcms.mvp.presenter.AuthenticatePresenterImpl +import com.casic.dcms.mvp.presenter.LoginPresenterImpl +import com.casic.dcms.mvp.view.IAuthenticateView +import com.casic.dcms.mvp.view.ILoginInView +import com.casic.dcms.utils.* +import com.casic.dcms.widgets.InputDialog +import com.qmuiteam.qmui.util.QMUIStatusBarHelper +import kotlinx.android.synthetic.main.activity_login.* + +class LoginActivity : BaseActivity(), IAuthenticateView, ILoginInView { + + private lateinit var authenticatePresenter: AuthenticatePresenterImpl + private lateinit var loginPresenter: LoginPresenterImpl + + override fun initLayoutView(): Int = R.layout.activity_login + + override fun setupTopBarLayout() { + //设置状态栏黑色字体图标 + QMUIStatusBarHelper.setStatusBarLightMode(this) + } + + override fun initData() { + val userAccount = StringHelper.getUserAccount() + val userPassword = SaveKeyValues.getValue("userPassword", "") as String + userNameView!!.setText(userAccount) + userPasswordView!!.setText(userPassword) + rememberPasswordView!!.isChecked = + !TextUtils.isEmpty(userAccount) && !TextUtils.isEmpty(userPassword) + rememberPasswordView!!.setOnCheckedChangeListener { buttonView, isChecked -> + if (!isChecked) { + try { + SaveKeyValues.removeKey("userPassword") + } catch (e: NullPointerException) { + e.printStackTrace() + } + } + } + } + + override fun initEvent() { + authenticatePresenter = AuthenticatePresenterImpl(this) + loginPresenter = LoginPresenterImpl(this) + val editText = inputLayout!!.editText + editText?.addTextChangedListener(object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} + override fun afterTextChanged(s: Editable) { + if (s.toString().trim { it <= ' ' }.length > 12) { + inputLayout!!.error = "密码长度超出限制" + } else { + inputLayout!!.error = null + } + } + }) + //点击输入法键盘"完成" + editText?.setOnEditorActionListener { v: TextView?, actionId: Int, event: KeyEvent? -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + authenticatePresenter.onReadyRetrofitRequest() + return@setOnEditorActionListener true + } + false + } + loginButton!!.setChangeAlphaWhenPress(true) + loginButton.setOnClickListener { + authenticatePresenter.onReadyRetrofitRequest() + } + changeServerConfigButton!!.setChangeAlphaWhenPress(true) + changeServerConfigButton.setOnClickListener { + InputDialog.Builder() + .setContext(this) + .setTitle("修改服务器地址和端口") + .setOnDialogClickListener(object : InputDialog.OnDialogClickListener { + override fun onConfirmClick(serverValue: String, portValue: String) { + if (!TextUtils.isEmpty(serverValue) && !TextUtils.isEmpty(portValue)) { + val serverConfig = "http:$serverValue:$portValue" + SaveKeyValues.putValue(Constant.IP_KEY, serverConfig) + ToastHelper.showToast("服务器地址修改成功", ToastHelper.SUCCESS) + } + } + + override fun onCancelClick() {} + }).build().show() + } + } + + override fun onResume() { + super.onResume() + //自动登录 + val autoLogin = SaveKeyValues.getValue("autoLogin", false) as Boolean + autoLoginView!!.isChecked = autoLogin + if (autoLogin) { + authenticatePresenter.onReadyRetrofitRequest() + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "登录中,请稍后") + } + + override fun authenticateResult(result: PublicKeyBean) { + if (result.isSuccess) { + val keyString = result.data.publicKey + AuthenticationHelper.savePublicKey(keyString) + val publicKey = RSAUtils.keyStrToPublicKey(keyString) + val account = userNameView!!.text.toString() + val userPassword = userPasswordView!!.text.toString() + if (autoLoginView!!.isChecked) { + SaveKeyValues.putValue("autoLogin", true) + } else { + SaveKeyValues.putValue("autoLogin", false) + } + if (TextUtils.isEmpty(account)) { + ToastHelper.showToast("用户名不能为空", ToastHelper.WARING) + return + } + //判断是否是手机号,先区分是手机号还是账号 + if (account.startsWith("1")) { + if (!StringHelper.isPhoneNumber(account)) { + ToastHelper.showToast("手机号格式不对,可以改为账号登录", ToastHelper.WARING) + return + } + } + if (TextUtils.isEmpty(userPassword)) { + ToastHelper.showToast("密码不能为空", ToastHelper.WARING) + return + } + if (rememberPasswordView!!.isChecked) { + StringHelper.saveUserAccount(account) + SaveKeyValues.putValue("userPassword", userPassword) + } + val dataByPublicKey = + RSAUtils.encryptDataByPublicKey(userPassword.toByteArray(), publicKey) + //登录并获取Token,POST请求 + loginPresenter.onReadyRetrofitRequest(account, dataByPublicKey) + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("登录失败", ToastHelper.ERROR) + } + + override fun obtainLoginResult(result: LoginResultBean) { + val token = result.data.token + if (!TextUtils.isEmpty(token)) { + //获取用户信息 + AuthenticationHelper.saveToken(token) + //验证成功登录 + startActivity(Intent(this, MainActivity::class.java)) + finish() + } + } + + override fun loginFail() { + ToastHelper.showToast("登录失败,请检查账号密码", ToastHelper.ERROR) + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + override fun onDestroy() { + super.onDestroy() + authenticatePresenter.disposeRetrofitRequest() + loginPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java deleted file mode 100644 index 05c41c9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.content.Intent; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.MaintainRecordAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.MaintainRecordBean; -import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl; -import com.casic.dcms.mvp.view.IMaintainRecordView; -import com.casic.dcms.utils.CalendarUtil; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.widgets.datepicker.DatePopupWindow; -import com.qmuiteam.qmui.widget.QMUIEmptyView; -import com.scwang.smartrefresh.layout.SmartRefreshLayout; -import com.scwang.smartrefresh.layout.api.RefreshLayout; -import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; -import com.scwang.smartrefresh.layout.listener.OnRefreshListener; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class MaintainRecordActivity extends BaseCaseActivity implements IMaintainRecordView { - - @BindView(R.id.emptyView) - QMUIEmptyView emptyView; - @BindView(R.id.dateView) - TextView dateView; - @BindView(R.id.calendarView) - ImageView calendarView; - @BindView(R.id.refreshLayout) - SmartRefreshLayout refreshLayout; - @BindView(R.id.recordRecyclerView) - RecyclerView recordRecyclerView; - - private Context context = this; - private int pageIndex = 1; - private boolean isRefresh, isLoadMore = false; - private WeakReferenceHandler weakReferenceHandler; - private List dataBeans = new ArrayList<>(); - private MaintainRecordPresenterImpl recordPresenter; - private MaintainRecordAdapter adapter; - private int startGroup = -1; - private int endGroup = -1; - private int startChild = -1; - private int endChild = -1; - - @Override - protected String setTitleName() { - return "桥梁养护记录"; - } - - @Override - public int initLayoutView() { - return R.layout.activity_maintain_record; - } - - @Override - public void initData() { - weakReferenceHandler = new WeakReferenceHandler(this); - recordPresenter = new MaintainRecordPresenterImpl(this); - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - - @Override - public void initEvent() { - calendarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - new DatePopupWindow - .Builder(MaintainRecordActivity.this, CalendarUtil.obtainLastTwoMonth(), v)//初始化 - .setInitSelect(startGroup, startChild, endGroup, endChild)//设置上一次选中的区间状态 - .setInitDay(true)//默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 - .setDateOnClickListener(new DatePopupWindow.DateOnClickListener() {//设置监听 - //点击完成按钮后回调返回方法 - @Override - public void getDate(String startDate, String endDate, int startGroupPosition, int - startChildPosition, int endGroupPosition, int endChildPosition) { - startGroup = startGroupPosition;//开始月份位置 - startChild = startChildPosition;//开始对应月份中日的位置 - endGroup = endGroupPosition;//结束月份位置 - endChild = endChildPosition;//结束对应月份中日的位置 - dateView.setText(startDate + "~" + endDate); - recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex); - } - }).builder(); - } - }); - refreshLayout.setOnRefreshListener(new OnRefreshListener() { - @Override - public void onRefresh(@NonNull final RefreshLayout refreshLayout) { - isRefresh = true; - //刷新之后页码重置 - pageIndex = 1; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { - @Override - public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { - isLoadMore = true; - pageIndex++; - recordPresenter.onReadyRetrofitRequest("", "", pageIndex); - } - }); - } - - @Override - public void obtainRecordResult(MaintainRecordBean resultBean) { - if (resultBean.isSuccess()) { - List dataRows = resultBean.getData().getRows(); - if (isRefresh) { - dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 - dataBeans = dataRows; - refreshLayout.finishRefresh(); - isRefresh = false; - } else if (isLoadMore) { - if (dataRows.size() == 0) { - ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); - } - dataBeans.addAll(dataRows); - refreshLayout.finishLoadMore(); - isLoadMore = false; - } else { - dataBeans = dataRows; - } - weakReferenceHandler.sendEmptyMessage(20210622); - } - } - - @Override - public void showProgress() { - OtherUtils.showLoadingDialog(this, "查询记录中,请稍后"); - } - - @Override - public void hideProgress() { - OtherUtils.dismissLoadingDialog(); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(MaintainRecordActivity activity) { - reference = new WeakReference<>(activity); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - MaintainRecordActivity resultActivity = reference.get(); - if (msg.what == 20210622) { - if (resultActivity.isRefresh || resultActivity.isLoadMore) { - resultActivity.adapter.notifyDataSetChanged(); - } else { - //首次加载数据 - if (resultActivity.dataBeans.size() == 0) { - resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null); - } else { - resultActivity.emptyView.hide(); - resultActivity.adapter = new MaintainRecordAdapter(resultActivity, resultActivity.dataBeans); - resultActivity.recordRecyclerView.setLayoutManager(new LinearLayoutManager(resultActivity)); - resultActivity.recordRecyclerView.addItemDecoration(new DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL)); - resultActivity.recordRecyclerView.setAdapter(resultActivity.adapter); - } - } - } - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (recordPresenter != null) { - recordPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt new file mode 100644 index 0000000..646533a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/MaintainRecordActivity.kt @@ -0,0 +1,153 @@ +package com.casic.dcms.ui + +import android.os.Handler +import android.os.Message +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.LinearLayoutManager +import com.casic.dcms.R +import com.casic.dcms.adapter.MaintainRecordAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.MaintainRecordBean +import com.casic.dcms.mvp.presenter.MaintainRecordPresenterImpl +import com.casic.dcms.mvp.view.IMaintainRecordView +import com.casic.dcms.ui.MaintainRecordActivity +import com.casic.dcms.utils.CalendarUtil +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.ToastHelper +import com.casic.dcms.widgets.datepicker.DatePopupWindow +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener +import com.scwang.smartrefresh.layout.listener.OnRefreshListener +import kotlinx.android.synthetic.main.activity_maintain_record.* +import java.lang.ref.WeakReference +import java.util.* + +class MaintainRecordActivity : BaseCaseActivity(), IMaintainRecordView { + + private lateinit var recordPresenter: MaintainRecordPresenterImpl + private var dataBeans: MutableList = ArrayList() + private var weakReferenceHandler: WeakReferenceHandler? = null + private var adapter: MaintainRecordAdapter? = null + private var pageIndex = 1 + private var isRefresh = false + private var isLoadMore = false + private var startGroup = -1 + private var endGroup = -1 + private var startChild = -1 + private var endChild = -1 + + override fun setTitleName(): String { + return "桥梁养护记录" + } + + override fun initLayoutView(): Int { + return R.layout.activity_maintain_record + } + + override fun initData() { + weakReferenceHandler = WeakReferenceHandler(this) + recordPresenter = MaintainRecordPresenterImpl(this) + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + + override fun initEvent() { + calendarView.setOnClickListener { v -> + DatePopupWindow.Builder( + this@MaintainRecordActivity, + CalendarUtil.obtainLastTwoMonth(), + v + ) //初始化 + .setInitSelect(startGroup, startChild, endGroup, endChild) //设置上一次选中的区间状态 + .setInitDay(true) //默认为true,UI内容为共几天、开始、结束;当为false时,UI内容为共几晚、入住、离开 + .setDateOnClickListener { startDate, endDate, startGroupPosition, startChildPosition, endGroupPosition, endChildPosition -> + + //设置监听 + //点击完成按钮后回调返回方法 + startGroup = startGroupPosition //开始月份位置 + startChild = startChildPosition //开始对应月份中日的位置 + endGroup = endGroupPosition //结束月份位置 + endChild = endChildPosition //结束对应月份中日的位置 + dateView.text = "$startDate~$endDate" + recordPresenter.onReadyRetrofitRequest(startDate, endDate, pageIndex) + }.builder() + } + refreshLayout.setOnRefreshListener { + isRefresh = true + //刷新之后页码重置 + pageIndex = 1 + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + refreshLayout.setOnLoadMoreListener { + isLoadMore = true + pageIndex++ + recordPresenter.onReadyRetrofitRequest("", "", pageIndex) + } + } + + override fun obtainRecordResult(resultBean: MaintainRecordBean) { + if (resultBean.isSuccess) { + val dataRows = resultBean.data.rows + when { + isRefresh -> { + dataBeans.clear() //下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows + refreshLayout.finishRefresh() + isRefresh = false + } + isLoadMore -> { + if (dataRows.size == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO) + } + dataBeans.addAll(dataRows) + refreshLayout.finishLoadMore() + isLoadMore = false + } + else -> { + dataBeans = dataRows + } + } + weakReferenceHandler!!.sendEmptyMessage(20210622) + } + } + + override fun showProgress() { + OtherUtils.showLoadingDialog(this, "查询记录中,请稍后") + } + + override fun hideProgress() { + OtherUtils.dismissLoadingDialog() + } + + private class WeakReferenceHandler(activity: MaintainRecordActivity) : Handler() { + private val reference: WeakReference = WeakReference(activity) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val resultActivity = reference.get() + if (msg.what == 20210622) { + if (resultActivity!!.isRefresh || resultActivity.isLoadMore) { + resultActivity.adapter!!.notifyDataSetChanged() + } else { + //首次加载数据 + if (resultActivity.dataBeans.size == 0) { + resultActivity.emptyView.show("抱歉,没有查到相关养护记录", null) + } else { + resultActivity.emptyView.hide() + resultActivity.adapter = + MaintainRecordAdapter(resultActivity, resultActivity.dataBeans) + resultActivity.recordRecyclerView.layoutManager = + LinearLayoutManager(resultActivity) + resultActivity.recordRecyclerView.addItemDecoration( + DividerItemDecoration(resultActivity, DividerItemDecoration.VERTICAL) + ) + resultActivity.recordRecyclerView.adapter = resultActivity.adapter + } + } + } + } + + } + + override fun onDestroy() { + super.onDestroy() + recordPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java deleted file mode 100644 index fe48830..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Context; -import android.text.TextUtils; -import android.view.View; -import android.widget.AdapterView; -import android.widget.GridView; -import android.widget.TextView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.ImageGridViewAdapter; -import com.casic.dcms.base.BaseCaseActivity; -import com.casic.dcms.bean.CaseDetailBean; -import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl; -import com.casic.dcms.mvp.view.ICaseDetailView; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.StringHelper; -import com.casic.dcms.utils.ToastHelper; - -import java.util.ArrayList; - -import butterknife.BindView; -import butterknife.OnClick; - -public class PackageHandledDetailActivity extends BaseCaseActivity implements View.OnClickListener, - ICaseDetailView { - - private static final String TAG = "PackageHandledDetail"; - @BindView(R.id.caseNumberView) - TextView caseNumberView; - @BindView(R.id.caseHandleStatusView) - TextView caseHandleStatusView; - @BindView(R.id.caseTypeView) - TextView caseTypeView; - @BindView(R.id.caseLargeTypeView) - TextView caseLargeTypeView; - @BindView(R.id.caseSmallTypeView) - TextView caseSmallTypeView; - @BindView(R.id.caseCommunityView) - TextView caseCommunityView; - @BindView(R.id.casePlaceView) - TextView casePlaceView; - @BindView(R.id.caseSituationView) - TextView caseSituationView; - @BindView(R.id.casePicGridView) - GridView casePicGridView; - @BindView(R.id.handleGridView) - GridView handleGridView; - @BindView(R.id.punishTypeView) - TextView punishTypeView; - @BindView(R.id.punishOpinionView) - TextView punishOpinionView; - @BindView(R.id.punishGridView) - GridView punishGridView; - @BindView(R.id.punishDateView) - TextView punishDateView; - - private Context context = this; - private CaseDetailBean.DataBean data = new CaseDetailBean.DataBean(); - private CaseDetailPresenterImpl caseDetailPresenter; - - @Override - public int initLayoutView() { - return R.layout.activity_package_handled; - } - - @Override - protected String setTitleName() { - return "已办案卷"; - } - - @Override - public void initData() { - String id = getIntent().getStringExtra("id"); - caseDetailPresenter = new CaseDetailPresenterImpl(this); - caseDetailPresenter.onReadyRetrofitRequest(id); - } - - @Override - public void initEvent() { - - } - - @Override - public void obtainCaseDetailData(CaseDetailBean resultBean) { - if (resultBean.isSuccess()) { - this.data = resultBean.getData().get(0); - caseNumberView.setText(data.getCaseid()); - caseHandleStatusView.setText(data.getCaseStateName()); - caseTypeView.setText(data.getEorcName()); - caseLargeTypeView.setText(data.getCasetypeName()); - caseSmallTypeView.setText(data.getCasetypeDetailName()); - caseCommunityView.setText(data.getCommunityName().equals("") ? "社区信息未知" : data.getCommunityName()); - casePlaceView.setText(StringHelper.filterString(data.getFieldintro())); - caseSituationView.setText(StringHelper.filterString(data.getDescription())); - - //最初始的案卷图片 - String verifyImages = data.getFileIdVerify(); - if (!TextUtils.isEmpty(verifyImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = verifyImages.split(","); - for (String s : split) { - if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - casePicGridView.setAdapter(imageAdapter); - //九宫格点击事件 - casePicGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //案卷处理时候上传的图片 - String handleImages = data.getFileIdProcess(); - if (!TextUtils.isEmpty(handleImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = handleImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - handleGridView.setAdapter(imageAdapter); - //九宫格点击事件 - handleGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - - //处罚记录 - punishTypeView.setText(StringHelper.TypeToString(data.getPunishType())); - punishOpinionView.setText(StringHelper.filterString(data.getPunishRemarks())); - String punishImages = data.getPunishImage(); - if (!TextUtils.isEmpty(punishImages)) { - ArrayList urls = new ArrayList<>(); - String[] split = punishImages.split(","); - for (String s : split) { - if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { - urls.add(StringHelper.appendCompleteURL(s)); - } - } - ImageGridViewAdapter imageAdapter = new ImageGridViewAdapter(this); - imageAdapter.setImageList(urls); - punishGridView.setAdapter(imageAdapter); - //九宫格点击事件 - punishGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - OtherUtils.showBigImage(context, position, urls); - } - }); - imageAdapter.isDeleteVisible(false); - } - punishDateView.setText(data.getPunishTime()); - } - } - - @Override - public void obtainDataFail() { - ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR); - } - - @OnClick({R.id.locationMapView, R.id.handleLayout}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.locationMapView: - OtherUtils.displayOnMap(this, data.getEorcName(), data.getLng(), data.getLat()); - break; - case R.id.handleLayout: - OtherUtils.showCaseProcess(this, data.getProcessId()); - break; - default: - break; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - if (caseDetailPresenter != null) { - caseDetailPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt new file mode 100644 index 0000000..519216e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandledDetailActivity.kt @@ -0,0 +1,136 @@ +package com.casic.dcms.ui + +import android.text.TextUtils +import android.widget.AdapterView +import com.casic.dcms.R +import com.casic.dcms.adapter.ImageGridViewAdapter +import com.casic.dcms.base.BaseCaseActivity +import com.casic.dcms.bean.CaseDetailBean +import com.casic.dcms.mvp.presenter.CaseDetailPresenterImpl +import com.casic.dcms.mvp.view.ICaseDetailView +import com.casic.dcms.utils.OtherUtils +import com.casic.dcms.utils.StringHelper +import com.casic.dcms.utils.ToastHelper +import kotlinx.android.synthetic.main.activity_package_handled.* +import kotlinx.android.synthetic.main.include_package_base.* +import java.util.* + +class PackageHandledDetailActivity : BaseCaseActivity(), ICaseDetailView { + + private lateinit var caseDetailPresenter: CaseDetailPresenterImpl + private var data = CaseDetailBean.DataBean() + + override fun initLayoutView(): Int { + return R.layout.activity_package_handled + } + + override fun setTitleName(): String { + return "已办案卷" + } + + override fun initData() { + val id = intent.getStringExtra("id") + caseDetailPresenter = CaseDetailPresenterImpl(this) + caseDetailPresenter.onReadyRetrofitRequest(id) + } + + override fun initEvent() { + locationMapView.setOnClickListener { + OtherUtils.displayOnMap(this, data.eorcName, data.lng, data.lat) + } + handleLayout.setOnClickListener { + OtherUtils.showCaseProcess(this, data.processId) + } + } + + override fun obtainCaseDetailData(resultBean: CaseDetailBean) { + if (resultBean.isSuccess) { + data = resultBean.data[0] + caseNumberView.text = data.caseid + caseHandleStatusView.text = data.caseStateName + caseTypeView.text = data.eorcName + caseLargeTypeView.text = data.casetypeName + caseSmallTypeView.text = data.casetypeDetailName + caseCommunityView.text = if (data.communityName == "") "社区信息未知" else data.communityName + casePlaceView.text = StringHelper.filterString(data.fieldintro) + caseSituationView.text = StringHelper.filterString(data.description) + + //最初始的案卷图片 + val verifyImages = data.fileIdVerify + if (!TextUtils.isEmpty(verifyImages)) { + val urls = ArrayList() + val split = verifyImages.split(",").toTypedArray() + for (s in split) { + if (s.endsWith(".jpg") || s.contains(".jpeg") || s.contains(".png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + casePicGridView.adapter = imageAdapter + //九宫格点击事件 + casePicGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + + //案卷处理时候上传的图片 + val handleImages = data.fileIdProcess + if (!TextUtils.isEmpty(handleImages)) { + val urls = ArrayList() + val split = handleImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + handleGridView.adapter = imageAdapter + //九宫格点击事件 + handleGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage( + this, position, urls + ) + } + imageAdapter.isDeleteVisible(false) + } + + //处罚记录 + punishTypeView.text = StringHelper.TypeToString(data.punishType) + punishOpinionView.text = StringHelper.filterString(data.punishRemarks) + val punishImages = data.punishImage + if (!TextUtils.isEmpty(punishImages)) { + val urls = ArrayList() + val split = punishImages.split(",").toTypedArray() + for (s in split) { + if (s.contains("jpg") || s.contains("jpeg") || s.contains("png")) { + urls.add(StringHelper.appendCompleteURL(s)) + } + } + val imageAdapter = ImageGridViewAdapter(this) + imageAdapter.setImageList(urls) + punishGridView.adapter = imageAdapter + //九宫格点击事件 + punishGridView.onItemClickListener = + AdapterView.OnItemClickListener { parent, view, position, id -> + OtherUtils.showBigImage(this, position, urls) + } + imageAdapter.isDeleteVisible(false) + } + punishDateView.text = data.punishTime + } + } + + override fun obtainDataFail() { + ToastHelper.showToast("获取案卷详情失败", ToastHelper.ERROR) + } + + override fun onDestroy() { + super.onDestroy() + caseDetailPresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java deleted file mode 100644 index 07de568..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.casic.dcms.ui; - -import android.content.Intent; -import android.os.Build; -import android.os.Bundle; -import android.util.Log; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; - -import com.casic.dcms.utils.Constant; - -import java.util.List; - -import pub.devrel.easypermissions.EasyPermissions; - - -public class PermissionActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { - - private static final String TAG = "PermissionActivity"; - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - if (EasyPermissions.hasPermissions(this, Constant.USER_PERMISSIONS)) { - startLoginActivity(); - } else { - EasyPermissions.requestPermissions(this, "需要获取相关权限", Constant.PERMISSIONS_CODE, Constant.USER_PERMISSIONS); - } - } else { - startLoginActivity(); - } - } - - private void startLoginActivity() { - startActivity(new Intent(this, LoginActivity.class)); - finish(); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); - } - - @Override - public void onPermissionsGranted(int requestCode, @NonNull List perms) { - startLoginActivity(); - } - - @Override - public void onPermissionsDenied(int requestCode, @NonNull List perms) { - Log.e(TAG, "onPermissionsDenied: " + perms); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt new file mode 100644 index 0000000..4a05c96 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PermissionActivity.kt @@ -0,0 +1,57 @@ +package com.casic.dcms.ui + +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import com.casic.dcms.utils.Constant +import pub.devrel.easypermissions.EasyPermissions +import pub.devrel.easypermissions.EasyPermissions.PermissionCallbacks + +class PermissionActivity : AppCompatActivity(), PermissionCallbacks { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + //判断是否有权限,如果版本大于5.1才需要判断(即6.0以上),其他则不需要判断。 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (EasyPermissions.hasPermissions(this, *Constant.USER_PERMISSIONS)) { + startLoginActivity() + } else { + EasyPermissions.requestPermissions( + this, + "需要获取相关权限", + Constant.PERMISSIONS_CODE, + *Constant.USER_PERMISSIONS + ) + } + } else { + startLoginActivity() + } + } + + private fun startLoginActivity() { + startActivity(Intent(this, LoginActivity::class.java)) + finish() + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) + } + + override fun onPermissionsGranted(requestCode: Int, perms: List) { + startLoginActivity() + } + + override fun onPermissionsDenied(requestCode: Int, perms: List) { + Log.e(TAG, "onPermissionsDenied: $perms") + } + + companion object { + private const val TAG = "PermissionActivity" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java deleted file mode 100644 index dd3cc70..0000000 --- a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.LinearLayout; - -import androidx.core.content.ContextCompat; -import androidx.fragment.app.Fragment; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.SubViewPagerAdapter; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.ui.fragment.PersonOnLineFragment; -import com.casic.dcms.ui.fragment.PersonOnMapFragment; -import com.casic.dcms.widgets.NoScrollViewPager; -import com.google.android.material.tabs.TabLayout; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnlineActivity extends BaseActivity { - - private static final String[] pageTitles = {"人员分布", "人员列表"}; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.personTabLayout) - TabLayout personTabLayout; - @BindView(R.id.personViewPager) - NoScrollViewPager personViewPager; - - @Override - public int initLayoutView() { - return R.layout.activity_online; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - List fragmentList = new ArrayList<>(); - fragmentList.add(new PersonOnMapFragment()); - fragmentList.add(new PersonOnLineFragment()); - SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), pageTitles, fragmentList); - personViewPager.setAdapter(adapter); - //绑定TabLayout - personTabLayout.setupWithViewPager(personViewPager); - LinearLayout linearLayout = (LinearLayout) personTabLayout.getChildAt(0); - linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); - linearLayout.setDividerDrawable(ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical)); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt new file mode 100644 index 0000000..436a18c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PersonOnlineActivity.kt @@ -0,0 +1,44 @@ +package com.casic.dcms.ui + +import android.widget.LinearLayout +import androidx.core.content.ContextCompat +import androidx.fragment.app.Fragment +import com.casic.dcms.R +import com.casic.dcms.adapter.SubViewPagerAdapter +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.ui.fragment.PersonOnLineFragment +import com.casic.dcms.ui.fragment.PersonOnMapFragment +import kotlinx.android.synthetic.main.activity_online.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.util.* + +class PersonOnlineActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_online + + override fun setupTopBarLayout() { + topLayout!!.setTitle("在岗人员").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener { finish() } + } + + override fun initData() { + val fragmentList: MutableList = ArrayList() + fragmentList.add(PersonOnMapFragment()) + fragmentList.add(PersonOnLineFragment()) + val adapter = SubViewPagerAdapter(supportFragmentManager, pageTitles, fragmentList) + personViewPager!!.adapter = adapter + //绑定TabLayout + personTabLayout!!.setupWithViewPager(personViewPager) + val linearLayout = personTabLayout!!.getChildAt(0) as LinearLayout + linearLayout.showDividers = LinearLayout.SHOW_DIVIDER_MIDDLE + linearLayout.dividerDrawable = + ContextCompat.getDrawable(this, R.drawable.layout_divider_vertical) + } + + override fun initEvent() {} + + companion object { + private val pageTitles = arrayOf("人员分布", "人员列表") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java deleted file mode 100644 index 9f316a9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.casic.dcms.ui; - -import android.view.View; -import android.widget.TextView; - -import androidx.core.content.ContextCompat; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.bean.UserBean; -import com.casic.dcms.utils.StringHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/14 15:22 - * @email : 290677893@qq.com - **/ -public class UserInfoActivity extends BaseActivity { - - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.userNameView) - TextView userNameView; - @BindView(R.id.userPhoneView) - TextView userPhoneView; - @BindView(R.id.userDeptView) - TextView userDeptView; - - @Override - public int initLayoutView() { - return R.layout.activity_user; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); - } - - @Override - public void initData() { - UserBean.DataBean userBean = StringHelper.getUserBean(); - userNameView.setText(userBean.getName()); - userPhoneView.setText(userBean.getPhone()); - userDeptView.setText(userBean.getDeptName()); - } - - @Override - public void initEvent() { - - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt new file mode 100644 index 0000000..0ae22ba --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/UserInfoActivity.kt @@ -0,0 +1,34 @@ +package com.casic.dcms.ui + +import androidx.core.content.ContextCompat +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.StringHelper +import kotlinx.android.synthetic.main.activity_user.* +import kotlinx.android.synthetic.main.include_top_bar.* + +/** + * @author : Pengxh + * @time : 2021/4/14 15:22 + * @email : 290677893@qq.com + */ +class UserInfoActivity : BaseActivity() { + + override fun initLayoutView(): Int = R.layout.activity_user + + override fun setupTopBarLayout() { + topLayout.setTitle("个人资料").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1) + .setOnClickListener { finish() } + } + + override fun initData() { + val userBean = StringHelper.getUserBean() + userNameView.text = userBean.name + userPhoneView.text = userBean.phone + userDeptView.text = userBean.deptName + } + + override fun initEvent() {} +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java deleted file mode 100644 index c9e31e1..0000000 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.casic.dcms.ui; - -import android.annotation.SuppressLint; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.location.Location; -import android.os.Handler; -import android.os.Message; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; - -import com.amap.api.location.AMapLocation; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseActivity; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.LocationHelper; -import com.casic.dcms.utils.OtherUtils; -import com.casic.dcms.utils.ToastHelper; -import com.casic.dcms.utils.callback.ILocationListener; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.QMUITopBarLayout; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; -import butterknife.OnClick; - -public class WorkerOnMapActivity extends BaseActivity implements View.OnClickListener { - - private static final String TAG = "WorkerOnMapActivity"; - @BindView(R.id.topLayout) - QMUITopBarLayout topLayout; - @BindView(R.id.mapView) - MapView mapView; - - private String userName, createTime, toiletName; - private double lng, lat; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.activity_worker_map; - } - - @Override - protected void setupTopBarLayout() { - topLayout.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)); - topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); - topLayout.addLeftImageButton(R.drawable.ic_left_white, 0).setOnClickListener(v -> finish()); - } - - @Override - public void initData() { - userName = getIntent().getStringExtra("userName"); - createTime = getIntent().getStringExtra("createTime"); - toiletName = getIntent().getStringExtra("toiletName"); - lng = getIntent().getDoubleExtra("lng", Constant.DEFAULT_LNG); - lat = getIntent().getDoubleExtra("lat", Constant.DEFAULT_LAT); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - Point point = new Point(lng, lat, SpatialReference.create(4326)); - mapView.setViewpointCenterAsync(point, 64000);//标注到指定经纬度并放大地图显示 - addPictureMarker(point); - - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - if (Math.abs(lng - point.getX()) <= Constant.DELTA_LNG_10 && Math.abs(lat - point.getY()) <= Constant.DELTA_LAT_10) { - weakReferenceHandler.sendEmptyMessage(2021060101); - } - } else { - weakReferenceHandler.sendEmptyMessage(2021060102); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(WorkerOnMapActivity mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - WorkerOnMapActivity mapActivity = reference.get(); - switch (msg.what) { - case 2021060101: - View popupView = LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView signInTimeView = popupView.findViewById(R.id.signInTimeView); - TextView toiletNameView = popupView.findViewById(R.id.toiletNameView); - - userNameView.setText(mapActivity.userName); - signInTimeView.setText(mapActivity.createTime); - toiletNameView.setText(mapActivity.toiletName); - - QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapActivity.mapView); - break; - case 2021060102: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - private void addPictureMarker(Point point) { - Bitmap caseBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.on_line); - BitmapDrawable caseDrawable = new BitmapDrawable(getResources(), caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - Graphic graphic = new Graphic(point, pictureMarker); - GraphicsOverlay mGraphicsOverlay = new GraphicsOverlay(); - ListenableList overlayGraphics = mGraphicsOverlay.getGraphics(); - ListenableList graphicsOverlays = mapView.getGraphicsOverlays(); - overlayGraphics.add(graphic); - graphicsOverlays.add(mGraphicsOverlay); - } - - @OnClick({R.id.expandMapView, R.id.minusMapView, R.id.removeToLocalView}) - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.expandMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 0.5); - break; - case R.id.minusMapView: - mapView.setViewpointScaleAsync(mapView.getMapScale() * 2); - break; - case R.id.removeToLocalView: - OtherUtils.showLoadingDialog(this, "定位中,请稍后"); - LocationHelper.obtainCurrentLocationByGD(this, new ILocationListener() { - @Override - public void onLocationGet(Location location) { - - } - - @Override - public void onAMapLocationGet(AMapLocation aMapLocation) { - if (aMapLocation != null) { - double[] gcjToWgs = LocationHelper.gcjToWgs(aMapLocation.getLongitude(), aMapLocation.getLatitude()); - Point point = new Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)); - addPictureMarker(point); - mapView.setViewpointCenterAsync((point), 2800); - OtherUtils.dismissLoadingDialog(); - } - } - }, true); - break; - default: - break; - } - } - - protected void onResume() { - super.onResume(); - mapView.resume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.pause(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.dispose(); - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt new file mode 100644 index 0000000..d5163a4 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.kt @@ -0,0 +1,187 @@ +package com.casic.dcms.ui + +import android.annotation.SuppressLint +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.location.Location +import android.os.Handler +import android.os.Message +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import androidx.core.content.ContextCompat +import com.amap.api.location.AMapLocation +import com.casic.dcms.R +import com.casic.dcms.base.BaseActivity +import com.casic.dcms.utils.* +import com.casic.dcms.utils.callback.ILocationListener +import com.esri.arcgisruntime.geometry.Point +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.activity_worker_map.* +import kotlinx.android.synthetic.main.include_top_bar.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class WorkerOnMapActivity : BaseActivity() { + + private var weakReferenceHandler: WeakReferenceHandler? = null + private var userName: String? = null + private var createTime: String? = null + private var toiletName: String? = null + private var lng = 0.0 + private var lat = 0.0 + + override fun initLayoutView(): Int = R.layout.activity_worker_map + + override fun setupTopBarLayout() { + topLayout!!.setTitle("查看位置").setTextColor(ContextCompat.getColor(this, R.color.white)) + topLayout!!.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)) + topLayout!!.addLeftImageButton(R.drawable.ic_left_white, 0) + .setOnClickListener { finish() } + } + + override fun initData() { + userName = intent.getStringExtra("userName") + createTime = intent.getStringExtra("createTime") + toiletName = intent.getStringExtra("toiletName") + lng = intent.getDoubleExtra("lng", Constant.DEFAULT_LNG) + lat = intent.getDoubleExtra("lat", Constant.DEFAULT_LAT) + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + override fun initEvent() { + val point = Point(lng, lat, SpatialReference.create(4326)) + mapView!!.setViewpointCenterAsync(point, 64000.0) //标注到指定经纬度并放大地图显示 + addPictureMarker(point) + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(this, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = android.graphics.Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val p = identifyResult.graphicsOverlay.extent.center + if (abs(lng - p.x) <= Constant.DELTA_LNG_10 && abs(lat - p.y) <= Constant.DELTA_LAT_10) { + weakReferenceHandler!!.sendEmptyMessage(2021060101) + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021060102) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + + expandMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 0.5) + } + + minusMapView.setOnClickListener { + mapView!!.setViewpointScaleAsync(mapView!!.mapScale * 2) + } + + removeToLocalView.setOnClickListener { + OtherUtils.showLoadingDialog(this, "定位中,请稍后") + LocationHelper.obtainCurrentLocationByGD(this, object : ILocationListener { + override fun onLocationGet(location: Location) {} + + override fun onAMapLocationGet(aMapLocation: AMapLocation) { + val gcjToWgs = LocationHelper.gcjToWgs( + aMapLocation.longitude, + aMapLocation.latitude + ) + val p = Point(gcjToWgs[0], gcjToWgs[1], SpatialReference.create(4326)) + addPictureMarker(p) + mapView!!.setViewpointCenterAsync(p, 2800.0) + OtherUtils.dismissLoadingDialog() + } + }, true) + } + } + + private class WeakReferenceHandler(mapFragment: WorkerOnMapActivity) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapActivity = reference.get() + when (msg.what) { + 2021060101 -> { + val popupView = + LayoutInflater.from(mapActivity).inflate(R.layout.popu_worker, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val signInTimeView = popupView.findViewById(R.id.signInTimeView) + val toiletNameView = popupView.findViewById(R.id.toiletNameView) + userNameView.text = mapActivity!!.userName + signInTimeView.text = mapActivity.createTime + toiletNameView.text = mapActivity.toiletName + QMUIPopups.popup(mapActivity, QMUIDisplayHelper.dp2px(mapActivity, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(mapActivity, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapActivity.mapView!!) + } + 2021060102 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + private fun addPictureMarker(point: Point) { + val caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line) + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphic = Graphic(point, pictureMarker) + val mGraphicsOverlay = GraphicsOverlay() + val overlayGraphics = mGraphicsOverlay.graphics + val graphicsOverlays = mapView!!.graphicsOverlays + overlayGraphics.add(graphic) + graphicsOverlays.add(mGraphicsOverlay) + } + + override fun onResume() { + super.onResume() + mapView!!.resume() + } + + override fun onPause() { + super.onPause() + mapView!!.pause() + } + + override fun onDestroy() { + super.onDestroy() + mapView!!.dispose() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java deleted file mode 100644 index 2729958..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.bin.david.form.core.SmartTable; -import com.bin.david.form.core.TableConfig; -import com.bin.david.form.data.style.FontStyle; -import com.bin.david.form.data.style.LineStyle; -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.ExcelDataBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:42 - * @email : 290677893@qq.com - **/ -public class ExcelFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.dataTableView) - SmartTable dataTableView; - - private String tag = ""; - private String begTime; - private String endTime; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private Context context; - private List excelDataBeans; - - public static ExcelFragment newInstance(String tag) { - ExcelFragment excelFragment = new ExcelFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - excelFragment.setArguments(bundle); - return excelFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_excel; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - excelDataBeans = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - //表格数据需要把0的加进去,饼图不需要 - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseSource(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - excelDataBeans.add(new ExcelDataBean(i, dataBean.getCaseType(), Integer.parseInt(caseNum))); - } - dataTableView.setData(excelDataBeans); - initTableConfig(); - } - } - - private void initTableConfig() { - TableConfig config = dataTableView.getConfig(); - //首行属性 - config.setColumnTitleStyle(new FontStyle(50, Color.DKGRAY));//设置列标题文字样式 - config.setColumnTitleBackgroundColor(Color.LTGRAY); - config.setColumnTitleVerticalPadding(30); - //内容属性 - config.setContentStyle(new FontStyle(50, Color.DKGRAY)); - config.setVerticalPadding(30); - - config.setShowTableTitle(false);//不显示标题 - config.setShowXSequence(false);//不显示横向ABC....序列 - config.setShowYSequence(false);//不显示纵向123....序列 - config.setMinTableWidth(QMUIDisplayHelper.getScreenWidth(context));//不设置的话会就不会居中显示 - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt new file mode 100644 index 0000000..0988773 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/ExcelFragment.kt @@ -0,0 +1,122 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.bin.david.form.data.style.FontStyle +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.ExcelDataBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import kotlinx.android.synthetic.main.fragment_excel.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:42 + * @email : 290677893@qq.com + */ +class ExcelFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var excelDataBeans: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_excel + + override fun setupTopBarLayout() { + + } + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + //表格数据需要把0的加进去,饼图不需要 + excelDataBeans.add(ExcelDataBean(i, dataBean.caseSource, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + excelDataBeans.add(ExcelDataBean(i, dataBean.caseType, caseNum.toInt())) + } + dataTableView!!.setData(excelDataBeans as List?) + initTableConfig() + } + } + + private fun initTableConfig() { + val config = dataTableView!!.config + //首行属性 + config.columnTitleStyle = + FontStyle(50, Color.DKGRAY) //设置列标题文字样式 + config.columnTitleBackgroundColor = Color.LTGRAY + config.columnTitleVerticalPadding = 30 + //内容属性 + config.contentStyle = FontStyle(50, Color.DKGRAY) + config.verticalPadding = 30 + config.isShowTableTitle = false //不显示标题 + config.isShowXSequence = false //不显示横向ABC....序列 + config.isShowYSequence = false //不显示纵向123....序列 + config.minTableWidth = QMUIDisplayHelper.getScreenWidth(context) //不设置的话会就不会居中显示 + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): ExcelFragment { + val excelFragment = ExcelFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + excelFragment.arguments = bundle + return excelFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java deleted file mode 100644 index 434dcb8..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.content.Context; -import android.widget.ExpandableListView; - -import com.casic.dcms.R; -import com.casic.dcms.adapter.OnlinePersonAdapter; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - -import butterknife.BindView; - -public class PersonOnLineFragment extends BaseFragment implements IPersonOnlineView { - - @BindView(R.id.deptTreeView) - ExpandableListView deptTreeView; - - private Context context; - private PersonOnlinePresenterImpl onlinePresenter; - private HashSet deptSet = new HashSet<>(); - private List deptList = new ArrayList<>();//部门名集合 - private List> deptAndPersons = new ArrayList<>();//个人信息集合的集合 - private OnlinePersonAdapter onlinePersonAdapter; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_list; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - onlinePersonAdapter = new OnlinePersonAdapter(context); - } - - @Override - public void initEvent() { - - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - deptList.clear(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - deptSet.add(bean.getDeptName()); - } - //hashSet去重然后转List - deptList = new ArrayList<>(deptSet); - if (deptList.size() > 0) { - deptAndPersons.clear(); - for (String title : deptList) { - List beanList = new ArrayList<>(); - for (OnlinePersonBean.DataBean dataBean : dataBeans) { - if (title.equals(dataBean.getDeptName())) { - PersonBean personBean = new PersonBean(); - personBean.setPersonDept(dataBean.getDeptName()); - personBean.setPersonName(dataBean.getName()); - personBean.setPersonPhone(dataBean.getPhone()); - personBean.setLastTimeFmt(dataBean.getLastTimeFmt()); - personBean.setOnLine(dataBean.isOnLine()); - - beanList.add(personBean); - } - } - deptAndPersons.add(beanList); - } - onlinePersonAdapter.setData(deptList, deptAndPersons); - deptTreeView.setAdapter(onlinePersonAdapter); - } - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt new file mode 100644 index 0000000..ca974a9 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnLineFragment.kt @@ -0,0 +1,70 @@ +package com.casic.dcms.ui.fragment + +import com.casic.dcms.R +import com.casic.dcms.adapter.OnlinePersonAdapter +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import kotlinx.android.synthetic.main.fragment_person_list.* +import java.util.* + +class PersonOnLineFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private lateinit var onlinePersonAdapter: OnlinePersonAdapter + private val deptSet = HashSet() + private var deptList: MutableList = ArrayList() //部门名集合 + private val deptAndPersons: MutableList> = ArrayList() //个人信息集合的集合 + + public override fun initLayoutView(): Int = R.layout.fragment_person_list + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + onlinePersonAdapter = OnlinePersonAdapter(context) + } + + public override fun initEvent() {} + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + deptList.clear() + for (bean in dataBeans) { + deptSet.add(bean.deptName) + } + //hashSet去重然后转List + deptList = ArrayList(deptSet) + if (deptList.size > 0) { + deptAndPersons.clear() + for (title in deptList) { + val beanList: MutableList = ArrayList() + for (dataBean in dataBeans) { + if (title == dataBean.deptName) { + val personBean = PersonBean() + personBean.personDept = dataBean.deptName + personBean.personName = dataBean.name + personBean.personPhone = dataBean.phone + personBean.lastTimeFmt = dataBean.lastTimeFmt + personBean.isOnLine = dataBean.isOnLine + beanList.add(personBean) + } + } + deptAndPersons.add(beanList) + } + onlinePersonAdapter.setData(deptList, deptAndPersons) + deptTreeView!!.setAdapter(onlinePersonAdapter) + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java deleted file mode 100644 index cdfbfa9..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.java +++ /dev/null @@ -1,236 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.drawable.BitmapDrawable; -import android.os.Handler; -import android.os.Message; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import androidx.annotation.NonNull; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.OnlinePersonBean; -import com.casic.dcms.bean.PointPersonBean; -import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl; -import com.casic.dcms.mvp.view.IPersonOnlineView; -import com.casic.dcms.utils.ArcGisMapCreator; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.ToastHelper; -import com.esri.arcgisruntime.concurrent.ListenableFuture; -import com.esri.arcgisruntime.geometry.Point; -import com.esri.arcgisruntime.geometry.SpatialReference; -import com.esri.arcgisruntime.mapping.ArcGISMap; -import com.esri.arcgisruntime.mapping.Basemap; -import com.esri.arcgisruntime.mapping.BasemapStyle; -import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener; -import com.esri.arcgisruntime.mapping.view.Graphic; -import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; -import com.esri.arcgisruntime.mapping.view.IdentifyGraphicsOverlayResult; -import com.esri.arcgisruntime.mapping.view.MapView; -import com.esri.arcgisruntime.symbology.PictureMarkerSymbol; -import com.esri.arcgisruntime.util.ListenableList; -import com.qmuiteam.qmui.util.QMUIDisplayHelper; -import com.qmuiteam.qmui.widget.popup.QMUIPopup; -import com.qmuiteam.qmui.widget.popup.QMUIPopups; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.ExecutionException; - -import butterknife.BindView; - -public class PersonOnMapFragment extends BaseFragment implements IPersonOnlineView { - - private static final String TAG = "PersonOnMapFragment"; - @BindView(R.id.mapView) - MapView mapView; - - private PersonOnlinePresenterImpl onlinePresenter; - private ListenableList graphicsOverlays; - private Resources resources; - private Context context; - private List personBeans; - private WeakReferenceHandler weakReferenceHandler; - - @Override - public int initLayoutView() { - return R.layout.fragment_person_map; - } - - @Override - protected void setupTopBarLayout() { - context = getContext(); - resources = context.getResources(); - } - - @Override - public void initData() { - onlinePresenter = new PersonOnlinePresenterImpl(this); - onlinePresenter.onReadyRetrofitRequest("", "", ""); - - mapView.setAttributionTextVisible(false);//去掉左下角属性标识 - mapView.setViewpointScaleAsync(64000); - - ArcGISMap arcGISMap = new ArcGISMap(BasemapStyle.ARCGIS_STREETS); - //创建底图、并设置底图图层 - Basemap basemap = new Basemap(ArcGisMapCreator.createBaseLayer()); - arcGISMap.setBasemap(basemap); - mapView.setMap(arcGISMap); - - graphicsOverlays = mapView.getGraphicsOverlays(); - weakReferenceHandler = new WeakReferenceHandler(this); - } - - @SuppressLint("ClickableViewAccessibility") - @Override - public void initEvent() { - mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(context, mapView) { - @Override - public boolean onSingleTapConfirmed(MotionEvent e) { - android.graphics.Point screenPoint = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY())); - final ListenableFuture> overlaysAsync = mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1); - overlaysAsync.addDoneListener(new Runnable() { - @Override - public void run() { - try { - List overlayResultList = overlaysAsync.get(); - if (!overlayResultList.isEmpty()) { - IdentifyGraphicsOverlayResult identifyResult = overlayResultList.get(0); - Point point = identifyResult.getGraphicsOverlay().getExtent().getCenter(); - for (PointPersonBean dataBean : personBeans) { - Point beanPoint = dataBean.getPoint(); - if (Math.abs(beanPoint.getX() - point.getX()) <= Constant.DELTA_LNG_10 && - Math.abs(beanPoint.getY() - point.getY()) <= Constant.DELTA_LAT_10) { - Message message = weakReferenceHandler.obtainMessage(); - message.what = 2021051901; - message.obj = dataBean; - weakReferenceHandler.sendMessage(message); - } - } - } else { - weakReferenceHandler.sendEmptyMessage(2021051902); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - }); - return super.onSingleTapConfirmed(e); - } - }); - } - - private static class WeakReferenceHandler extends Handler { - private WeakReference reference; - - private WeakReferenceHandler(PersonOnMapFragment mapFragment) { - reference = new WeakReference<>(mapFragment); - } - - @Override - public void handleMessage(@NonNull Message msg) { - super.handleMessage(msg); - PersonOnMapFragment mapFragment = reference.get(); - Context context = mapFragment.context; - switch (msg.what) { - case 2021051901: - PointPersonBean dataBean = (PointPersonBean) msg.obj; - View popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null); - TextView userNameView = popupView.findViewById(R.id.userNameView); - TextView deptNameView = popupView.findViewById(R.id.deptNameView); - TextView phoneNumberView = popupView.findViewById(R.id.phoneNumberView); - TextView lastTimeView = popupView.findViewById(R.id.lastTimeView); - - userNameView.setText(dataBean.getPersonName()); - deptNameView.setText(dataBean.getPersonDept()); - phoneNumberView.setText(dataBean.getPersonPhone()); - lastTimeView.setText(dataBean.getPointTime()); - - QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) - .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) - .view(popupView) - .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) - .dimAmount(0.6f) - .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) - .onDismiss(null) - .show(mapFragment.mapView); - break; - case 2021051902: - ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING); - break; - default: - break; - } - } - } - - @Override - public void onlineResult(OnlinePersonBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeans = resultBean.getData(); - if (dataBeans.size() >= 1) { - personBeans = new ArrayList<>(); - for (OnlinePersonBean.DataBean bean : dataBeans) { - String lng = bean.getPositionLng(); - String lat = bean.getPositionLat(); - if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { - Log.d(TAG, "经纬度异常"); - } else { - PointPersonBean personBean = new PointPersonBean(); - personBean.setPersonName(bean.getName()); - personBean.setPersonPhone(bean.getPhone()); - personBean.setPersonDept(bean.getDeptName()); - personBean.setPointTime(bean.getLastTimeFmt()); - personBean.setOnLine(bean.isOnLine()); - personBean.setPoint(new Point(Double.parseDouble(lng), Double.parseDouble(lat), SpatialReference.create(4326))); - - personBeans.add(personBean); - } - } - addPictureMarker(personBeans); - } else { - ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR); - } - } - } - - private void addPictureMarker(List personBeans) { - Bitmap caseBitmap; - for (PointPersonBean bean : personBeans) { - if (bean.isOnLine()) { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.on_line); - } else { - caseBitmap = BitmapFactory.decodeResource(resources, R.mipmap.off_line); - } - BitmapDrawable caseDrawable = new BitmapDrawable(resources, caseBitmap); - PictureMarkerSymbol pictureMarker = new PictureMarkerSymbol(caseDrawable); - pictureMarker.setWidth(64); - pictureMarker.setHeight(42); - pictureMarker.loadAsync();//异步加载Marker,防止阻塞 - - GraphicsOverlay graphicsOverlay = new GraphicsOverlay(); - ListenableList graphics = graphicsOverlay.getGraphics(); - graphics.add(new Graphic(bean.getPoint(), pictureMarker)); - graphicsOverlays.add(graphicsOverlay); - } - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (onlinePresenter != null) { - onlinePresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt new file mode 100644 index 0000000..97d94c5 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PersonOnMapFragment.kt @@ -0,0 +1,200 @@ +package com.casic.dcms.ui.fragment + +import android.annotation.SuppressLint +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Point +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Message +import android.text.TextUtils +import android.util.Log +import android.view.LayoutInflater +import android.view.MotionEvent +import android.widget.TextView +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.OnlinePersonBean +import com.casic.dcms.bean.PointPersonBean +import com.casic.dcms.mvp.presenter.PersonOnlinePresenterImpl +import com.casic.dcms.mvp.view.IPersonOnlineView +import com.casic.dcms.utils.ArcGisMapCreator +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.ToastHelper +import com.esri.arcgisruntime.geometry.SpatialReference +import com.esri.arcgisruntime.mapping.ArcGISMap +import com.esri.arcgisruntime.mapping.Basemap +import com.esri.arcgisruntime.mapping.BasemapStyle +import com.esri.arcgisruntime.mapping.view.DefaultMapViewOnTouchListener +import com.esri.arcgisruntime.mapping.view.Graphic +import com.esri.arcgisruntime.mapping.view.GraphicsOverlay +import com.esri.arcgisruntime.symbology.PictureMarkerSymbol +import com.esri.arcgisruntime.util.ListenableList +import com.qmuiteam.qmui.util.QMUIDisplayHelper +import com.qmuiteam.qmui.widget.popup.QMUIPopup +import com.qmuiteam.qmui.widget.popup.QMUIPopups +import kotlinx.android.synthetic.main.fragment_person_map.* +import java.lang.ref.WeakReference +import java.util.concurrent.ExecutionException +import kotlin.math.abs +import kotlin.math.roundToInt + +class PersonOnMapFragment : BaseFragment(), IPersonOnlineView { + + private lateinit var onlinePresenter: PersonOnlinePresenterImpl + private var graphicsOverlays: ListenableList? = null + private var personBeans: ArrayList? = null + private var weakReferenceHandler: WeakReferenceHandler? = null + + public override fun initLayoutView(): Int = R.layout.fragment_person_map + + override fun setupTopBarLayout() { + + } + + public override fun initData() { + onlinePresenter = PersonOnlinePresenterImpl(this) + onlinePresenter.onReadyRetrofitRequest("", "", "") + mapView!!.isAttributionTextVisible = false //去掉左下角属性标识 + mapView!!.setViewpointScaleAsync(64000.0) + val arcGISMap = ArcGISMap(BasemapStyle.ARCGIS_STREETS) + //创建底图、并设置底图图层 + val baseMap = Basemap(ArcGisMapCreator.createBaseLayer()) + arcGISMap.basemap = baseMap + mapView!!.map = arcGISMap + graphicsOverlays = mapView!!.graphicsOverlays + weakReferenceHandler = WeakReferenceHandler(this) + } + + @SuppressLint("ClickableViewAccessibility") + public override fun initEvent() { + mapView!!.onTouchListener = object : DefaultMapViewOnTouchListener(context, mapView) { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val screenPoint = Point(e.x.roundToInt(), e.y.roundToInt()) + val overlaysAsync = + mMapView.identifyGraphicsOverlaysAsync(screenPoint, 10.0, false, 1) + overlaysAsync.addDoneListener { + try { + val overlayResultList = overlaysAsync.get() + if (overlayResultList.isNotEmpty()) { + val identifyResult = overlayResultList[0] + val point = identifyResult.graphicsOverlay.extent.center + for (dataBean in personBeans!!) { + val beanPoint = dataBean.point + if (abs(beanPoint.x - point.x) <= Constant.DELTA_LNG_10 && + abs(beanPoint.y - point.y) <= Constant.DELTA_LAT_10 + ) { + val message = weakReferenceHandler!!.obtainMessage() + message.what = 2021051901 + message.obj = dataBean + weakReferenceHandler!!.sendMessage(message) + } + } + } else { + weakReferenceHandler!!.sendEmptyMessage(2021051902) + } + } catch (e: InterruptedException) { + e.printStackTrace() + } catch (e: ExecutionException) { + e.printStackTrace() + } + } + return super.onSingleTapConfirmed(e) + } + } + } + + private class WeakReferenceHandler(mapFragment: PersonOnMapFragment) : Handler() { + private val reference: WeakReference = WeakReference(mapFragment) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val mapFragment = reference.get() + val context = mapFragment!!.context + when (msg.what) { + 2021051901 -> { + val dataBean = msg.obj as PointPersonBean + val popupView = LayoutInflater.from(context).inflate(R.layout.popu_person, null) + val userNameView = popupView.findViewById(R.id.userNameView) + val deptNameView = popupView.findViewById(R.id.deptNameView) + val phoneNumberView = popupView.findViewById(R.id.phoneNumberView) + val lastTimeView = popupView.findViewById(R.id.lastTimeView) + userNameView.text = dataBean.personName + deptNameView.text = dataBean.personDept + phoneNumberView.text = dataBean.personPhone + lastTimeView.text = dataBean.pointTime + QMUIPopups.popup(context, QMUIDisplayHelper.dp2px(context, 250)) + .preferredDirection(QMUIPopup.DIRECTION_BOTTOM) + .view(popupView) + .edgeProtection(QMUIDisplayHelper.dp2px(context, 20)) + .dimAmount(0.6f) + .animStyle(QMUIPopup.ANIM_GROW_FROM_CENTER) + .onDismiss(null) + .show(mapFragment.mapView!!) + } + 2021051902 -> ToastHelper.showToast("附近无工作人员,请重新选点", ToastHelper.WARING) + } + } + } + + override fun onlineResult(resultBean: OnlinePersonBean) { + if (resultBean.isSuccess) { + val dataBeans = resultBean.data + if (dataBeans.size >= 1) { + personBeans = ArrayList() + for (bean in dataBeans) { + val lng = bean.positionLng + val lat = bean.positionLat + if (TextUtils.isEmpty(lng) || TextUtils.isEmpty(lat)) { + Log.d(TAG, "经纬度异常") + } else { + val personBean = PointPersonBean() + personBean.personName = bean.name + personBean.personPhone = bean.phone + personBean.personDept = bean.deptName + personBean.pointTime = bean.lastTimeFmt + personBean.isOnLine = bean.isOnLine + personBean.point = com.esri.arcgisruntime.geometry.Point( + lng.toDouble(), + lat.toDouble(), + SpatialReference.create(4326) + ) + personBeans!!.add(personBean) + } + } + addPictureMarker(personBeans!!) + } else { + ToastHelper.showToast("当前没有人员在线", ToastHelper.ERROR) + } + } + } + + private fun addPictureMarker(personBeans: List) { + var caseBitmap: Bitmap? + for (bean in personBeans) { + caseBitmap = if (bean.isOnLine) { + BitmapFactory.decodeResource(resources, R.mipmap.on_line) + } else { + BitmapFactory.decodeResource(resources, R.mipmap.off_line) + } + val caseDrawable = BitmapDrawable(resources, caseBitmap) + val pictureMarker = PictureMarkerSymbol(caseDrawable) + pictureMarker.width = 64f + pictureMarker.height = 42f + pictureMarker.loadAsync() //异步加载Marker,防止阻塞 + val graphicsOverlay = GraphicsOverlay() + val graphics = graphicsOverlay.graphics + graphics.add(Graphic(bean.point, pictureMarker)) + graphicsOverlays!!.add(graphicsOverlay) + } + } + + override fun onDestroyView() { + super.onDestroyView() + onlinePresenter.disposeRetrofitRequest() + } + + companion object { + private const val TAG = "PersonOnMapFragment" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java deleted file mode 100644 index 740b722..0000000 --- a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.casic.dcms.ui.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import android.text.TextUtils; - -import com.casic.dcms.R; -import com.casic.dcms.base.BaseFragment; -import com.casic.dcms.bean.EventSourceBean; -import com.casic.dcms.bean.HighEventBean; -import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl; -import com.casic.dcms.mvp.presenter.HighEventPresenterImpl; -import com.casic.dcms.mvp.view.IEventSourceView; -import com.casic.dcms.mvp.view.IHighEventView; -import com.casic.dcms.utils.Constant; -import com.casic.dcms.utils.SaveKeyValues; -import com.casic.dcms.utils.ToastHelper; -import com.github.mikephil.charting.charts.PieChart; -import com.github.mikephil.charting.components.Legend; -import com.github.mikephil.charting.data.PieData; -import com.github.mikephil.charting.data.PieDataSet; -import com.github.mikephil.charting.data.PieEntry; -import com.github.mikephil.charting.formatter.PercentFormatter; - -import java.util.ArrayList; -import java.util.List; - -import butterknife.BindView; - -/** - * @author : Pengxh - * @time : 2021/4/16 9:43 - * @email : 290677893@qq.com - **/ -public class PieChartFragment extends BaseFragment implements IEventSourceView, IHighEventView { - - @BindView(R.id.pieChartView) - PieChart pieChartView; - - private String tag = ""; - private EventSourcePresenterImpl eventSourcePresenter; - private HighEventPresenterImpl highEventPresenter; - private List entries; - private String begTime; - private String endTime; - - public static PieChartFragment newInstance(String tag) { - PieChartFragment pieChartFragment = new PieChartFragment(); - Bundle bundle = new Bundle(); - bundle.putString("tag", tag); - pieChartFragment.setArguments(bundle); - return pieChartFragment; - } - - @Override - protected int initLayoutView() { - return R.layout.fragment_chart; - } - - @Override - protected void setupTopBarLayout() { - - } - - @Override - protected void initData() { - Bundle arguments = getArguments(); - if (arguments != null) { - tag = arguments.getString("tag"); - } - begTime = (String) SaveKeyValues.getValue("begTime", ""); - endTime = (String) SaveKeyValues.getValue("endTime", ""); - entries = new ArrayList<>(); - eventSourcePresenter = new EventSourcePresenterImpl(this); - highEventPresenter = new HighEventPresenterImpl(this); - } - - @Override - protected void initEvent() { - if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { - ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR); - return; - } - if (tag.equals("EventSourceActivity")) { - eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime); - } else { - highEventPresenter.onReadyRetrofitRequest(begTime, endTime); - } - } - - @Override - public void obtainEventSourceResult(EventSourceBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - EventSourceBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseSource())); - } - } - initPieChart(); - } - } - - @Override - public void obtainHighEventResult(HighEventBean resultBean) { - if (resultBean.isSuccess()) { - List dataBeanList = resultBean.getData(); - for (int i = 0; i < dataBeanList.size() - 1; i++) { - HighEventBean.DataBean dataBean = dataBeanList.get(i); - String caseNum = dataBean.getCaseNum(); - if (!caseNum.equals("0")) { - entries.add(new PieEntry(Float.parseFloat(caseNum), dataBean.getCaseType())); - } - } - initPieChart(); - } - } - - private void initPieChart() { - pieChartView.setDragDecelerationFrictionCoef(0.95f); - pieChartView.setUsePercentValues(true);//百分比数字显示 - pieChartView.setDrawEntryLabels(false);//不显示分类标签 - pieChartView.setDrawCenterText(false); - pieChartView.getDescription().setEnabled(false); - pieChartView.setRotationAngle(0); - // enable rotation of the chart by touch - pieChartView.setRotationEnabled(true); - pieChartView.setHighlightPerTapEnabled(true); - pieChartView.setDrawHoleEnabled(false); - setChartData(); - pieChartView.animateY(1000); - - Legend l = pieChartView.getLegend(); - l.setVerticalAlignment(Legend.LegendVerticalAlignment.TOP); - l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT); - l.setOrientation(Legend.LegendOrientation.VERTICAL); - l.setDrawInside(false); - l.setXEntrySpace(7f); - l.setYEntrySpace(1f); - l.setYOffset(0f); - // entry label styling - pieChartView.setEntryLabelColor(Color.BLUE); - pieChartView.setEntryLabelTextSize(12f); - pieChartView.setExtraOffsets(30, 30, 30, 30); - } - - private void setChartData() { - PieDataSet dataSet = new PieDataSet(entries, ""); - dataSet.setSliceSpace(0f); - dataSet.setSelectionShift(5f); - dataSet.setColors(Constant.PIE_COLORS); - //当数据太多时,将标签显示在饼图外 - if (entries.size() > 8) { - dataSet.setXValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - dataSet.setYValuePosition(PieDataSet.ValuePosition.OUTSIDE_SLICE); - } - dataSet.setValueLineColor(Color.GREEN); - dataSet.setValueLinePart1Length(0.6f); - PieData data = new PieData(dataSet); - data.setValueFormatter(new PercentFormatter(pieChartView));//坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 - data.setValueTextSize(12f); - data.setValueTextColor(Color.BLUE);//数据值颜色 - pieChartView.setData(data); - pieChartView.highlightValues(null); - pieChartView.invalidate(); - } - - @Override - public void onDestroyView() { - super.onDestroyView(); - if (eventSourcePresenter != null) { - eventSourcePresenter.disposeRetrofitRequest(); - } - if (highEventPresenter != null) { - highEventPresenter.disposeRetrofitRequest(); - } - } -} diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt new file mode 100644 index 0000000..1b93193 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/PieChartFragment.kt @@ -0,0 +1,157 @@ +package com.casic.dcms.ui.fragment + +import android.graphics.Color +import android.os.Bundle +import android.text.TextUtils +import com.casic.dcms.R +import com.casic.dcms.base.BaseFragment +import com.casic.dcms.bean.EventSourceBean +import com.casic.dcms.bean.HighEventBean +import com.casic.dcms.mvp.presenter.EventSourcePresenterImpl +import com.casic.dcms.mvp.presenter.HighEventPresenterImpl +import com.casic.dcms.mvp.view.IEventSourceView +import com.casic.dcms.mvp.view.IHighEventView +import com.casic.dcms.utils.Constant +import com.casic.dcms.utils.SaveKeyValues +import com.casic.dcms.utils.ToastHelper +import com.github.mikephil.charting.components.Legend +import com.github.mikephil.charting.data.PieData +import com.github.mikephil.charting.data.PieDataSet +import com.github.mikephil.charting.data.PieEntry +import com.github.mikephil.charting.formatter.PercentFormatter +import kotlinx.android.synthetic.main.fragment_chart.* +import java.util.* + +/** + * @author : Pengxh + * @time : 2021/4/16 9:43 + * @email : 290677893@qq.com + */ +class PieChartFragment : BaseFragment(), IEventSourceView, IHighEventView { + + private lateinit var eventSourcePresenter: EventSourcePresenterImpl + private lateinit var highEventPresenter: HighEventPresenterImpl + private var entries: MutableList = ArrayList() + private var pageTitle: String? = "" + private var begTime: String? = null + private var endTime: String? = null + + override fun initLayoutView(): Int = R.layout.fragment_chart + + override fun setupTopBarLayout() {} + + override fun initData() { + val arguments = arguments + if (arguments != null) { + pageTitle = arguments.getString("tag") + } + begTime = SaveKeyValues.getValue("begTime", "") as String + endTime = SaveKeyValues.getValue("endTime", "") as String + eventSourcePresenter = EventSourcePresenterImpl(this) + highEventPresenter = HighEventPresenterImpl(this) + } + + override fun initEvent() { + if (TextUtils.isEmpty(begTime) || TextUtils.isEmpty(endTime)) { + ToastHelper.showToast("起始时间或者结束时间不对", ToastHelper.ERROR) + return + } + if (tag == "EventSourceActivity") { + eventSourcePresenter.onReadyRetrofitRequest(begTime, endTime) + } else { + highEventPresenter.onReadyRetrofitRequest(begTime, endTime) + } + } + + override fun obtainEventSourceResult(resultBean: EventSourceBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseSource)) + } + } + initPieChart() + } + } + + override fun obtainHighEventResult(resultBean: HighEventBean) { + if (resultBean.isSuccess) { + val dataBeanList = resultBean.data + for (i in 0 until dataBeanList.size - 1) { + val dataBean = dataBeanList[i] + val caseNum = dataBean.caseNum + if (caseNum != "0") { + entries.add(PieEntry(caseNum.toFloat(), dataBean.caseType)) + } + } + initPieChart() + } + } + + private fun initPieChart() { + pieChartView!!.dragDecelerationFrictionCoef = 0.95f + pieChartView!!.setUsePercentValues(true) //百分比数字显示 + pieChartView!!.setDrawEntryLabels(false) //不显示分类标签 + pieChartView!!.setDrawCenterText(false) + pieChartView!!.description.isEnabled = false + pieChartView!!.rotationAngle = 0f + // enable rotation of the chart by touch + pieChartView!!.isRotationEnabled = true + pieChartView!!.isHighlightPerTapEnabled = true + pieChartView!!.isDrawHoleEnabled = false + setChartData() + pieChartView!!.animateY(1000) + val l = pieChartView!!.legend + l.verticalAlignment = Legend.LegendVerticalAlignment.TOP + l.horizontalAlignment = Legend.LegendHorizontalAlignment.LEFT + l.orientation = Legend.LegendOrientation.VERTICAL + l.setDrawInside(false) + l.xEntrySpace = 7f + l.yEntrySpace = 1f + l.yOffset = 0f + // entry label styling + pieChartView!!.setEntryLabelColor(Color.BLUE) + pieChartView!!.setEntryLabelTextSize(12f) + pieChartView!!.setExtraOffsets(30f, 30f, 30f, 30f) + } + + private fun setChartData() { + val dataSet = PieDataSet(entries, "") + dataSet.sliceSpace = 0f + dataSet.selectionShift = 5f + dataSet.setColors(*Constant.PIE_COLORS) + //当数据太多时,将标签显示在饼图外 + if (entries.size > 8) { + dataSet.xValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + dataSet.yValuePosition = PieDataSet.ValuePosition.OUTSIDE_SLICE + } + dataSet.valueLineColor = Color.GREEN + dataSet.valueLinePart1Length = 0.6f + val data = PieData(dataSet) + data.setValueFormatter(PercentFormatter(pieChartView)) //坑:在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。 + data.setValueTextSize(12f) + data.setValueTextColor(Color.BLUE) //数据值颜色 + pieChartView!!.data = data + pieChartView!!.highlightValues(null) + pieChartView!!.invalidate() + } + + override fun onDestroyView() { + super.onDestroyView() + eventSourcePresenter.disposeRetrofitRequest() + highEventPresenter.disposeRetrofitRequest() + } + + companion object { + fun newInstance(tag: String?): PieChartFragment { + val pieChartFragment = PieChartFragment() + val bundle = Bundle() + bundle.putString("tag", tag) + pieChartFragment.arguments = bundle + return pieChartFragment + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/dcms/utils/RSAUtils.java b/app/src/main/java/com/casic/dcms/utils/RSAUtils.java deleted file mode 100644 index a35be19..0000000 --- a/app/src/main/java/com/casic/dcms/utils/RSAUtils.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.casic.dcms.utils; - -import android.util.Base64; - -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.KeyFactory; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.X509EncodedKeySpec; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.NoSuchPaddingException; - -/** - * Created by W530 on 2019/9/26. - */ - -public class RSAUtils { - //构建Cipher实例时所传入的的字符串,默认为"RSA/NONE/PKCS1Padding" - private static String sTransform = "RSA/None/PKCS1Padding"; - //进行Base64转码时的flag设置,默认为Base64.DEFAULT - private static int sBase64Mode = Base64.DEFAULT; - - //初始化方法,设置参数 - public static void init(String transform, int base64Mode) { - sTransform = transform; - sBase64Mode = base64Mode; - } - - - private static byte[] processData(byte[] srcData, Key key, int mode) { - //用来保存处理结果 - byte[] resultBytes = null; - try { - //获取Cipher实例 - Cipher cipher = Cipher.getInstance(sTransform); - //初始化Cipher,mode指定是加密还是解密,key为公钥或私钥 - cipher.init(mode, key); - //处理数据 - resultBytes = cipher.doFinal(srcData); - - } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) { - e.printStackTrace(); - } - return resultBytes; - } - - public static String encryptDataByPublicKey(byte[] srcData, PublicKey publicKey) { - byte[] resultBytes = processData(srcData, publicKey, Cipher.ENCRYPT_MODE); - return Base64.encodeToString(resultBytes, sBase64Mode); - } - - public static PublicKey keyStrToPublicKey(String publicKeyStr) { - PublicKey publicKey = null; - byte[] keyBytes = Base64.decode(publicKeyStr, sBase64Mode); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); - try { - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - publicKey = keyFactory.generatePublic(keySpec); - } catch (NoSuchAlgorithmException | InvalidKeySpecException e) { - e.printStackTrace(); - } - return publicKey; - } -} diff --git a/app/src/main/java/com/casic/dcms/utils/RSAUtils.kt b/app/src/main/java/com/casic/dcms/utils/RSAUtils.kt new file mode 100644 index 0000000..5958091 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/RSAUtils.kt @@ -0,0 +1,62 @@ +package com.casic.dcms.utils + +import android.util.Base64 +import java.security.* +import java.security.spec.InvalidKeySpecException +import java.security.spec.X509EncodedKeySpec +import javax.crypto.BadPaddingException +import javax.crypto.Cipher +import javax.crypto.IllegalBlockSizeException +import javax.crypto.NoSuchPaddingException + +object RSAUtils { + //构建Cipher实例时所传入的的字符串,默认为"RSA/NONE/PKCS1Padding" + private const val sTransform = "RSA/None/PKCS1Padding" + + //进行Base64转码时的flag设置,默认为Base64.DEFAULT + private const val sBase64Mode = Base64.DEFAULT + + private fun processData(srcData: ByteArray, key: Key, mode: Int): ByteArray? { + //用来保存处理结果 + var resultBytes: ByteArray? = null + try { + //获取Cipher实例 + val cipher = Cipher.getInstance(sTransform) + //初始化Cipher,mode指定是加密还是解密,key为公钥或私钥 + cipher.init(mode, key) + //处理数据 + resultBytes = cipher.doFinal(srcData) + } catch (e: NoSuchAlgorithmException) { + e.printStackTrace() + } catch (e: NoSuchPaddingException) { + e.printStackTrace() + } catch (e: InvalidKeyException) { + e.printStackTrace() + } catch (e: BadPaddingException) { + e.printStackTrace() + } catch (e: IllegalBlockSizeException) { + e.printStackTrace() + } + return resultBytes + } + + fun encryptDataByPublicKey(srcData: ByteArray, publicKey: PublicKey): String { + val resultBytes = processData(srcData, publicKey, Cipher.ENCRYPT_MODE) + return Base64.encodeToString(resultBytes, sBase64Mode) + } + + fun keyStrToPublicKey(publicKeyStr: String?): PublicKey { + var publicKey: PublicKey? = null + val keyBytes = Base64.decode(publicKeyStr, sBase64Mode) + val keySpec = X509EncodedKeySpec(keyBytes) + try { + val keyFactory = KeyFactory.getInstance("RSA") + publicKey = keyFactory.generatePublic(keySpec) + } catch (e: NoSuchAlgorithmException) { + e.printStackTrace() + } catch (e: InvalidKeySpecException) { + e.printStackTrace() + } + return publicKey!! + } +} \ No newline at end of file