From 4c81e94cc786de24fba41029de4093966425865e Mon Sep 17 00:00:00 2001 From: tongchao Date: Tue, 3 Jun 2025 17:30:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=8D=E6=A4=8D=E8=AE=A1=E5=88=92=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=9B=E5=9C=9F=E5=9C=B0=E5=B7=A1=E6=9F=A5=E5=88=97?= =?UTF-8?q?=E8=A1=A8&=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 20 + .../gov_affairs_cloud/base/BaseActivity.java | 5 + .../gov_affairs_cloud/config/AppConfig.java | 14 + .../tairui/gov_affairs_cloud/entity/Api.java | 17 +- .../gov_affairs_cloud/entity/Constant.java | 2 + .../ui/home/HomeFragment.java | 14 + .../ui/land/AddPlantPlanActivity.java | 113 +++++- .../ui/land/EditPlantActualActivity.java | 232 +++++++++++ .../ui/land/EditPlantPlanActivity.java | 272 +++++++++++++ .../ui/land/InspectionDetailActivity.java | 56 +++ .../ui/land/InspectionListActivity.java | 373 ++++++++++++++++++ .../ui/land/PlantPlanActivity.java | 25 +- .../ui/land/PlantPlanDetailActivity.java | 10 +- .../ui/land/PlantPlanListActivity.java | 61 ++- .../ui/land/entity/DictDataEntity.java | 97 +++++ .../ui/land/entity/InspectionListEntity.java | 346 ++++++++++++++++ .../ui/land/entity/PlantPlanDetailEntity.java | 8 +- .../gov_affairs_cloud/ui/my/MyFragment.java | 16 +- .../ui/my/entity/UserInfoEntity.java | 154 ++++---- .../ui/workspace/WorkSpaceFragment.java | 3 + .../util/DecimalDigitsInputFilter.java | 33 ++ .../bg_container_light_gray_raduis_2.xml | 10 + .../bg_container_light_green_raduis_2.xml | 12 + .../bg_container_light_orange_raduis_2.xml | 10 + ...g_container_white_raduis_2_gray_border.xml | 14 + .../res/layout/activity_add_plant_plan.xml | 40 -- .../res/layout/activity_edit_plant_actual.xml | 262 ++++++++++++ .../res/layout/activity_edit_plant_plan.xml | 262 ++++++++++++ .../res/layout/activity_inspection_detail.xml | 342 ++++++++++++++++ .../res/layout/activity_inspection_list.xml | 167 ++++++++ .../main/res/layout/activity_plant_plan.xml | 79 ++-- .../res/layout/activity_plant_plan_list.xml | 82 ++-- app/src/main/res/layout/item_inspection.xml | 94 +++++ app/src/main/res/mipmap-xxhdpi/ic_cancel.png | Bin 0 -> 1341 bytes .../main/res/mipmap-xxhdpi/ic_edit_white.png | Bin 0 -> 834 bytes .../res/mipmap-xxhdpi/ic_location_small.png | Bin 0 -> 2387 bytes app/src/main/res/mipmap-xxhdpi/ic_member.png | Bin 0 -> 2222 bytes .../res/mipmap-xxhdpi/ic_publish_white.png | Bin 0 -> 1868 bytes app/src/main/res/values/colors.xml | 2 + 40 files changed, 2947 insertions(+), 303 deletions(-) create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/DictDataEntity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/InspectionListEntity.java create mode 100644 app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java create mode 100644 app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml create mode 100644 app/src/main/res/drawable/bg_container_light_green_raduis_2.xml create mode 100644 app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml create mode 100644 app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml create mode 100644 app/src/main/res/layout/activity_edit_plant_actual.xml create mode 100644 app/src/main/res/layout/activity_edit_plant_plan.xml create mode 100644 app/src/main/res/layout/activity_inspection_detail.xml create mode 100644 app/src/main/res/layout/activity_inspection_list.xml create mode 100644 app/src/main/res/layout/item_inspection.xml create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_cancel.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_edit_white.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_location_small.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_member.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_publish_white.png diff --git a/app/build.gradle b/app/build.gradle index 48ca6d2..4d135f9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,6 +47,7 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + signingConfigs { release { storeFile file('../key/tairui.jks') @@ -58,6 +59,7 @@ android { buildTypes { debug { signingConfig signingConfigs.release + buildConfigField "String", "DOMAIN", '"http://192.168.18.74:8080"' jniDebuggable false zipAlignEnabled false } @@ -66,6 +68,7 @@ android { signingConfig signingConfigs.release minifyEnabled false jniDebuggable false + buildConfigField "String", "DOMAIN", '"http://47.109.205.240:8080"' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ae8dbbc..c976461 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -153,6 +153,26 @@ android:configChanges="orientation|screenSize|keyboardHidden" android:exported="false" android:screenOrientation="portrait" /> + + + + extends AppCompatActiv protected void showToast(String str) { Toast.makeText(mContext, str, Toast.LENGTH_LONG).show(); } + protected void showError(String str) { PopTip.show(str).iconError(); } + protected void showSuccess(String str) { + PopTip.show(str).iconSuccess(); + } + protected void setText(TextView view, String txt, String defaultTxt) { if (view != null) { view.setText(TextUtils.isEmpty(txt) ? defaultTxt : txt); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java b/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java index ec9de55..99f6e67 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/config/AppConfig.java @@ -2,6 +2,7 @@ package com.tairui.gov_affairs_cloud.config; import com.orhanobut.hawk.Hawk; import com.tairui.gov_affairs_cloud.entity.Constant; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; import android.text.TextUtils; @@ -17,6 +18,7 @@ public class AppConfig { } private String token; + private UserInfoEntity userInfo; public String getToken() { if (TextUtils.isEmpty(token)) { @@ -28,4 +30,16 @@ public class AppConfig { public void setToken(String token) { this.token = token; } + + public UserInfoEntity getUserInfo() { + if (userInfo == null && Hawk.contains(Constant.USER_INFO)) { + userInfo = Hawk.get(Constant.USER_INFO); + } + return userInfo; + } + + public void setUserInfo(UserInfoEntity userInfo) { + this.userInfo = userInfo; + Hawk.put(Constant.USER_INFO, userInfo); + } } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java index 96412f4..130bce7 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Api.java @@ -1,9 +1,10 @@ package com.tairui.gov_affairs_cloud.entity; +import com.tairui.gov_affairs_cloud.BuildConfig; + public class Api { - public static String BASE_HOST = "http://192.168.18.9:8080"; - // public static String BASE_HOST = "http://47.109.205.240:8080"; + public static String BASE_HOST = BuildConfig.DOMAIN; public static String OSS_HOST = "http://gov-cloud.oss-cn-chengdu.aliyuncs.com/"; /** @@ -32,6 +33,8 @@ public class Api { public static final String CAPTCHA = BASE_HOST + "/auth/app/captcha"; public static final String HOME = BASE_HOST + "/app/home/data"; public static final String USER_INFO = BASE_HOST + "/app/my/info"; + + /* 土地信息 */ public static final String LAND_OVERVIEW = BASE_HOST + "/land-resource/analysis/overview"; public static final String LAND_SUB_AREA = BASE_HOST + "/land-resource/analysis/subArea"; public static final String LAND_AREA_REGION = BASE_HOST + "/system/area/region"; @@ -43,9 +46,19 @@ public class Api { public static final String LAND_TYPE = BASE_HOST + "/land-resource/baseInfo/landTree"; public static final String LAND_RESOURCE_TYPE_NO_CHILD = BASE_HOST + "/land-resource/baseInfo/landTypeNoChild"; public static final String LAND_RESOURCE_LIST = BASE_HOST + "/land-resource/landManage/page"; + /* 种植计划 */ public static final String PLANT_PLAN_HOME = BASE_HOST + "/land-resource/annualManage/app/main"; public static final String PLANT_PLAN_LIST = BASE_HOST + "/land-resource/annualManage/page"; public static final String PLANT_PLAN_CROPS = BASE_HOST + "/land-resource/crops/list"; public static final String PLANT_PLAN_DETAIL = BASE_HOST + "/land-resource/annualManage/"; + public static final String PLANT_PLAN_ADD = BASE_HOST + "/land-resource/annualManage/save"; + public static final String PLANT_PLAN_EDIT = BASE_HOST + "/land-resource/annualManage/edit"; + public static final String PLANT_PLAN_ACTUAL = BASE_HOST + "/land-resource/annualManage/save-actual"; + + /* 土地巡查 */ + public static final String INSPECTION_STATUS = BASE_HOST + "/system/dict/data/type/land_inspection_status"; + public static final String INSPECTION_TYPE = BASE_HOST + "/system/dict/data/type/land_res_patrol_type"; + public static final String INSPECTION_LIST_ADMIN = BASE_HOST + "/land-resource/landInspection/page"; + public static final String INSPECTION_LIST_GENERAL = BASE_HOST + "/land-resource/landInspection/page/general"; } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java index 61acbfa..2e99526 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/entity/Constant.java @@ -4,6 +4,8 @@ public class Constant { public static String TOKEN = "token"; + public static String USER_INFO = "user_info"; + public static String LOGIN_USER_NAME = "login_user_name"; public static String SELECT_REGION = "select_region"; diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java index 1787432..614aa00 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/home/HomeFragment.java @@ -8,12 +8,14 @@ import com.chad.library.adapter.base.BaseViewHolder; import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.R; import com.tairui.gov_affairs_cloud.base.BaseFragment; +import com.tairui.gov_affairs_cloud.config.AppConfig; import com.tairui.gov_affairs_cloud.databinding.FragmentHomeBinding; import com.tairui.gov_affairs_cloud.entity.Api; import com.tairui.gov_affairs_cloud.entity.PieBean; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.home.entity.HomeEntity; import com.tairui.gov_affairs_cloud.ui.land.LandActivity; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; import com.tairui.gov_affairs_cloud.util.DensityUtils; import com.tairui.gov_affairs_cloud.util.IntentUtil; import com.tairui.gov_affairs_cloud.util.glide.GlideLoader; @@ -102,6 +104,18 @@ public class HomeFragment extends BaseFragment { binding.loadingView.setVisibility(View.GONE); binding.blankView.setVisibility(View.VISIBLE); }); + getUserInfo(); + } + + private void getUserInfo() { + RxHttp.get(Api.USER_INFO) + .asResponse(UserInfoEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + AppConfig.getInstance().setUserInfo(data); + }, (OnError) error -> { + showToast(error.getErrorMsg()); + }); } private void initView(HomeEntity data) { diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java index c6dd38d..795d7e4 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/AddPlantPlanActivity.java @@ -3,6 +3,8 @@ package com.tairui.gov_affairs_cloud.ui.land; import java.util.ArrayList; import java.util.List; +import org.greenrobot.eventbus.EventBus; + import com.bigkoo.pickerview.builder.OptionsPickerBuilder; import com.bigkoo.pickerview.view.OptionsPickerView; import com.contrarywind.interfaces.IPickerViewData; @@ -10,14 +12,23 @@ import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.base.BaseActivity; import com.tairui.gov_affairs_cloud.databinding.ActivityAddPlantPlanBinding; import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.land.entity.CropsEntity; import com.tairui.gov_affairs_cloud.ui.land.entity.LandAreaRegionEntity; import com.tairui.gov_affairs_cloud.ui.land.entity.LandGridEntity; import com.tairui.gov_affairs_cloud.util.ArrayUtil; +import com.tairui.gov_affairs_cloud.util.DateUtils; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; import com.tairui.gov_affairs_cloud.util.SingleClickListener; import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; import android.view.View; import rxhttp.RxHttp; @@ -45,6 +56,12 @@ public class AddPlantPlanActivity extends BaseActivity { selectRegion = landAreaRegionData.get(0).getAreaChildVOS().get(options1).getAreaChildVOS().get(options2); - setText(binding.tvRegion, selectRegion.getAreaName()); selectGrid = null; + getGridData(); }).setTitleText("土地区域选择").setContentTextSize(20) .setSelectOptions(0, 0) .setTitleBgColor(Color.WHITE) @@ -155,7 +168,7 @@ public class AddPlantPlanActivity extends BaseActivity { selectGrid = landGridData.getRecords().get(options1); - setText(binding.tvGrid, selectGrid.getGridName()); + setText(binding.tvGrid, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); }).setTitleText("土地网格选择").setContentTextSize(20) .setSelectOptions(0) .setTitleBgColor(Color.WHITE) @@ -248,7 +261,7 @@ public class AddPlantPlanActivity extends BaseActivity cycleData = new ArrayList<>(); if (growthCycleUnit == 1) { - for (int i = 1; i < 32; i++) { + for (int i = 1; i < 366; i++) { cycleData.add(new PickerEntity(i + "天")); } } else if (growthCycleUnit == 2) { @@ -257,7 +270,7 @@ public class AddPlantPlanActivity extends BaseActivity { + hideLoading(); + showSuccess("计划添加成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } + } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java new file mode 100644 index 0000000..f697aee --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantActualActivity.java @@ -0,0 +1,232 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.contrarywind.interfaces.IPickerViewData; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityEditPlantActualBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; +import android.view.View; +import rxhttp.RxHttp; + +public class EditPlantActualActivity extends BaseActivity { + + private String selectMonth; + private String growthCycle; + + private OptionsPickerView monthPickerView; + + private PlantPlanDetailEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityEditPlantActualBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (PlantPlanDetailEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.inputArea.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); + binding.inputArea.setFilters(new InputFilter[] {new DecimalDigitsInputFilter()}); + + binding.tvGrid.setText(mData.getGridName()); + binding.inputPlanName.setText(mData.getPlanName()); + binding.tvCrops.setText(mData.getCropsName()); + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutMonth.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutMonth); + showMonthDialog(); + } + }); + binding.layoutCycle.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutCycle); + showCyclDialog(); + } + }); + binding.btnSubmit.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + checkSubmit(); + } + }); + } + + private void showMonthDialog() { + if (monthPickerView == null) { + List monthData = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + monthData.add(new PickerEntity((i + 1) + "月")); + } + monthPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectMonth = String.valueOf(options1 + 1); + setText(binding.tvMonth, selectMonth + "月"); + }).setTitleText("种植月份选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + monthPickerView.setPicker(monthData); + } + monthPickerView.show(); + } + + private void showCyclDialog() { + List cycleData = new ArrayList<>(); + int growthCycleUnit = Integer.parseInt(mData.getPlanParameters().getGrowthCycleUnit()); + if (growthCycleUnit == 1) { + for (int i = 1; i < 366; i++) { + cycleData.add(new PickerEntity(i + "天")); + } + } else if (growthCycleUnit == 2) { + for (int i = 1; i < 53; i++) { + cycleData.add(new PickerEntity(i + "周")); + } + } else if (growthCycleUnit == 3) { + for (int i = 1; i < 13; i++) { + cycleData.add(new PickerEntity(i + "个月")); + } + } else if (growthCycleUnit == 4) { + for (int i = 1; i < 6; i++) { + cycleData.add(new PickerEntity(i + "年")); + } + } + OptionsPickerView cyclePickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycle = String.valueOf(options1 + 1); + setText(binding.tvCycle, growthCycle + getCycleUnit(growthCycleUnit)); + }).setTitleText("种植周期时长选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cyclePickerView.setPicker(cycleData); + cyclePickerView.show(); + } + + private class PickerEntity implements IPickerViewData { + private String name; + + public PickerEntity(String m) { + this.name = m; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getPickerViewText() { + return name; + } + } + + private String getCycleUnit(int unit) { + String unitStr; + switch (unit) { + case 1: + unitStr = "天"; + break; + case 2: + unitStr = "周"; + break; + case 3: + unitStr = "个月"; + break; + case 4: + unitStr = "年"; + break; + default: + unitStr = ""; + break; + } + return unitStr; + } + + private void checkSubmit() { + String planArea = binding.inputArea.getText().toString().trim(); + if (TextUtils.isEmpty(planArea)) { + showError("请输入计划种植面积"); + return; + } + if (TextUtils.isEmpty(selectMonth)) { + showError("请选择种植月份"); + return; + } + if (TextUtils.isEmpty(growthCycle)) { + showError("请选择生长周期"); + return; + } + try { + double area = Double.parseDouble(planArea); + doAddPlanActual(area); + } catch (Exception e) { + showError("种植面积只可以输入数字"); + } + } + + private void doAddPlanActual(double planArea) { + showLoading(); + RxHttp.postJson(Api.PLANT_PLAN_ACTUAL) + .add("planId", mData.getId()) + .add("plantingArea", planArea) + .add("plantingMonths", selectMonth) + .add("growthCycle", growthCycle) + .add("growthCycleUnit", mData.getPlanParameters().getGrowthCycleUnit()) + .asResponse(Object.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + showSuccess("实际种植情况添加成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java new file mode 100644 index 0000000..6ad510c --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/EditPlantPlanActivity.java @@ -0,0 +1,272 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.contrarywind.interfaces.IPickerViewData; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityEditPlantPlanBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; +import com.tairui.gov_affairs_cloud.util.DecimalDigitsInputFilter; +import com.tairui.gov_affairs_cloud.util.KeybordUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.InputFilter; +import android.text.InputType; +import android.text.TextUtils; +import android.view.View; +import rxhttp.RxHttp; +import rxhttp.RxHttpJsonParam; + +public class EditPlantPlanActivity extends BaseActivity { + + private String selectMonth; + private String growthCycle; + private int growthCycleUnit = -1; //成长周期单位 1:天 2:周 3:月 4:年 + + private OptionsPickerView monthPickerView; + private OptionsPickerView cycleUnitPickerView; + + private PlantPlanDetailEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityEditPlantPlanBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (PlantPlanDetailEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.inputArea.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL); + binding.inputArea.setFilters(new InputFilter[] {new DecimalDigitsInputFilter()}); + + binding.tvGrid.setText(mData.getGridName()); + binding.inputPlanName.setHint(mData.getPlanName()); + binding.tvCrops.setText(mData.getCropsName()); + binding.inputArea.setHint(String.valueOf(mData.getPlanParameters().getPlantingArea())); + binding.tvMonth.setHint(mData.getPlanParameters().getPlantingMonths() + "月"); + binding.tvCycle.setHint(mData.getPlanParameters().getGrowthCycle() + getCycleUnit( + Integer.parseInt(mData.getPlanParameters().getGrowthCycleUnit()))); + + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutMonth.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutMonth); + showMonthDialog(); + } + }); + binding.layoutCycle.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + KeybordUtil.hideSoftInput(mContext, binding.layoutCycle); + showCycleUnitDialog(); + } + }); + binding.btnSubmit.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + checkSubmit(); + } + }); + } + + private void showMonthDialog() { + if (monthPickerView == null) { + List monthData = new ArrayList<>(); + for (int i = 0; i < 12; i++) { + monthData.add(new PickerEntity((i + 1) + "月")); + } + monthPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectMonth = String.valueOf(options1 + 1); + setText(binding.tvMonth, selectMonth + "月"); + }).setTitleText("种植月份选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + monthPickerView.setPicker(monthData); + } + monthPickerView.show(); + } + + private void showCycleUnitDialog() { + if (cycleUnitPickerView == null) { + List unitData = new ArrayList<>(); + unitData.add(new PickerEntity("天")); + unitData.add(new PickerEntity("周")); + unitData.add(new PickerEntity("月")); + unitData.add(new PickerEntity("年")); + cycleUnitPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycleUnit = options1 + 1; + showCyclDialog(); + }).setTitleText("种植周期单位选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cycleUnitPickerView.setPicker(unitData); + } + cycleUnitPickerView.show(); + } + + private void showCyclDialog() { + if (growthCycleUnit == -1) { + showError("请先选择生长周期单位"); + return; + } + List cycleData = new ArrayList<>(); + if (growthCycleUnit == 1) { + for (int i = 1; i < 366; i++) { + cycleData.add(new PickerEntity(i + "天")); + } + } else if (growthCycleUnit == 2) { + for (int i = 1; i < 53; i++) { + cycleData.add(new PickerEntity(i + "周")); + } + } else if (growthCycleUnit == 3) { + for (int i = 1; i < 13; i++) { + cycleData.add(new PickerEntity(i + "个月")); + } + } else if (growthCycleUnit == 4) { + for (int i = 1; i < 6; i++) { + cycleData.add(new PickerEntity(i + "年")); + } + } + OptionsPickerView cyclePickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + growthCycle = String.valueOf(options1 + 1); + setText(binding.tvCycle, growthCycle + getCycleUnit(growthCycleUnit)); + }).setTitleText("种植周期时长选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .build(); + + cyclePickerView.setPicker(cycleData); + cyclePickerView.show(); + } + + private class PickerEntity implements IPickerViewData { + private String name; + + public PickerEntity(String m) { + this.name = m; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String getPickerViewText() { + return name; + } + } + + private String getCycleUnit(int unit) { + String unitStr; + switch (unit) { + case 1: + unitStr = "天"; + break; + case 2: + unitStr = "周"; + break; + case 3: + unitStr = "个月"; + break; + case 4: + unitStr = "年"; + break; + default: + unitStr = ""; + break; + } + return unitStr; + } + + private void checkSubmit() { + boolean hasChange = false; + RxHttpJsonParam http = RxHttp.putJson(Api.PLANT_PLAN_EDIT); + http.add("id", mData.getId()); + String planName = binding.inputPlanName.getText().toString().trim(); + if (!TextUtils.isEmpty(planName)) { + http.add("planName", planName); + hasChange = true; + } + String planArea = binding.inputArea.getText().toString().trim(); + if (!TextUtils.isEmpty(planArea)) { + try { + double area = Double.parseDouble(planArea); + http.add("plantingArea", area); + hasChange = true; + } catch (Exception e) { + showError("种植面积只可以输入数字"); + return; + } + } + if (!TextUtils.isEmpty(selectMonth)) { + http.add("plantingMonths", selectMonth); + hasChange = true; + } + if (!TextUtils.isEmpty(growthCycle) && growthCycleUnit != -1) { + http.add("growthCycle", growthCycle); + http.add("growthCycleUnit", growthCycleUnit); + hasChange = true; + } + if (hasChange) { + showLoading(); + http.asResponse(Object.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + showSuccess("计划修改成功"); + EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST)); + binding.btnSubmit.postDelayed(() -> finish(), 1000); + }, (OnError) error -> { + hideLoading(); + showError(error.getErrorMsg()); + }); + } else { + finish(); + } + + } + +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java new file mode 100644 index 0000000..35f3a32 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionDetailActivity.java @@ -0,0 +1,56 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import com.tairui.gov_affairs_cloud.R; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.databinding.ActivityInspectionDetailBinding; +import com.tairui.gov_affairs_cloud.ui.land.entity.InspectionListEntity; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; + +import android.os.Bundle; +import android.view.View; + +public class InspectionDetailActivity extends BaseActivity { + + private InspectionListEntity.RecordsEntity mData; + + @Override + protected Class getBindingClass() { + return ActivityInspectionDetailBinding.class; + } + + @Override + protected void onQueryArguments() { + mData = (InspectionListEntity.RecordsEntity) getIntent().getSerializableExtra("data"); + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + setText(binding.tvTaskStatus, mData.getInspectionStatusName()); + setText(binding.tvTaskCode, mData.getTaskCode()); + setText(binding.tvTaskName, mData.getTaskName()); + setText(binding.tvTaskMembers, mData.getTaskMembers()); + setText(binding.tvTaskType, mData.getInspectionType()); + setText(binding.tvTaskTarget, mData.getInspectionTarget()); + setText(binding.tvTaskNotes, mData.getNotes()); + if (mData.getInspectionStatus().equals("-1")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_green)); + } else if (mData.getInspectionStatus().equals("00")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_blue)); + } else if (mData.getInspectionStatus().equals("01")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_txt_orange)); + } else if (mData.getInspectionStatus().equals("02")) { + binding.tvTaskStatus.setTextColor(getResColor(R.color.color_tv_content)); + } + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + } + +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java new file mode 100644 index 0000000..ffaa700 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/InspectionListActivity.java @@ -0,0 +1,373 @@ +package com.tairui.gov_affairs_cloud.ui.land; + +import java.util.ArrayList; +import java.util.List; + +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + +import com.bigkoo.pickerview.builder.OptionsPickerBuilder; +import com.bigkoo.pickerview.view.OptionsPickerView; +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.kongzue.dialogx.dialogs.MessageDialog; +import com.kongzue.dialogx.dialogs.PopMenu; +import com.kongzue.dialogx.util.ItemDivider; +import com.orhanobut.hawk.Hawk; +import com.rxjava.rxlife.RxLife; +import com.tairui.gov_affairs_cloud.R; +import com.tairui.gov_affairs_cloud.base.BaseActivity; +import com.tairui.gov_affairs_cloud.config.AppConfig; +import com.tairui.gov_affairs_cloud.databinding.ActivityInspectionListBinding; +import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.Constant; +import com.tairui.gov_affairs_cloud.entity.EventConstant; +import com.tairui.gov_affairs_cloud.entity.EventMessage; +import com.tairui.gov_affairs_cloud.http.OnError; +import com.tairui.gov_affairs_cloud.ui.land.entity.DictDataEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.InspectionListEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.LandAreaRegionEntity; +import com.tairui.gov_affairs_cloud.ui.land.entity.LandGridEntity; +import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; +import com.tairui.gov_affairs_cloud.util.ArrayUtil; +import com.tairui.gov_affairs_cloud.util.DensityUtils; +import com.tairui.gov_affairs_cloud.util.IntentUtil; +import com.tairui.gov_affairs_cloud.util.SingleClickListener; +import com.tairui.gov_affairs_cloud.util.ToastUtil; +import com.tairui.gov_affairs_cloud.widget.RefreshRecyclerView; + +import android.graphics.Color; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import rxhttp.RxHttp; +import rxhttp.RxHttpNoBodyParam; + +public class InspectionListActivity extends BaseActivity { + + private LandAreaRegionEntity selectRegion; + private LandGridEntity.RecordsEntity selectGrid; + private DictDataEntity selectType; + + private List landAreaRegionData; + private LandGridEntity landGridData; + + private OptionsPickerView landRegionPickerView; + private OptionsPickerView landGridPickerView; + + private InspectionListAdapter mAdapter; + private int currentPageIndex = 1; + + private List typeData; + + @Override + protected Class getBindingClass() { + return ActivityInspectionListBinding.class; + } + + @Override + protected void onQueryArguments() { + EventBus.getDefault().register(this); + if (Hawk.contains(Constant.SELECT_REGION)) { + selectRegion = Hawk.get(Constant.SELECT_REGION); + } + if (Hawk.contains(Constant.SELECT_GRID)) { + selectGrid = Hawk.get(Constant.SELECT_GRID); + } + } + + @Override + protected void onFindView(Bundle savedInstanceState) { + binding.refreshRecycler.setLayoutManager(new LinearLayoutManager(mContext)); + mAdapter = new InspectionListAdapter(); + binding.refreshRecycler.setAdapter(mAdapter); + if (selectRegion != null && selectGrid != null) { + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); + } + } + + @Override + protected void onBindListener() { + binding.btnBack.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + finish(); + } + }); + binding.layoutRegion.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + showRegionDialog(); + } + }); + binding.refreshRecycler.setRefreshRecyclerListener(new RefreshRecyclerView.RefreshRecyclerListener() { + @Override + public void onRefresh() { + currentPageIndex = 1; + requestData(false); + } + + @Override + public void onLoadmore() { + requestData(true); + } + + @Override + public void onBlankClick() { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + }); + mAdapter.setOnItemClickListener((baseQuickAdapter, view, i) -> { + InspectionListEntity.RecordsEntity item = mAdapter.getItem(i); + Bundle bundle = new Bundle(); + bundle.putSerializable("data", item); + IntentUtil.startActivity(mContext, InspectionDetailActivity.class, bundle); + }); + binding.layoutType.setOnClickListener(new SingleClickListener() { + @Override + protected void onSingleClick(View v) { + showStatusMenu(); + } + }); + } + + @Override + protected void onApplyData() { + getInspectionTypeData(); + getRegionData(); + if (selectRegion != null && selectGrid != null) { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + } + + private void getRegionData() { + RxHttp.get(Api.LAND_AREA_REGION) + .add("areaCode", "530926") + .asResponseList(LandAreaRegionEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + landAreaRegionData = data; + if (selectRegion == null || selectGrid == null) { + showRegionNoticeMsg(); + } + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showRegionNoticeMsg() { + MessageDialog.show("选择区域", "请先选择网格区域信息", "确定", "取消") + .setOkButton((baseDialog, v1) -> { + showRegionDialog(); + return false; + }).setCancelButton((dialog, v) -> { + finish(); + return false; + }); + } + + private void getInspectionTypeData() { + RxHttp.get(Api.INSPECTION_TYPE) + .asResponseList(DictDataEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + DictDataEntity allItem = new DictDataEntity(); + allItem.setDictLabel("全部"); + data.add(0, allItem); + typeData = data; + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showStatusMenu() { + List menus = new ArrayList<>(); + for (DictDataEntity item : typeData) { + menus.add(item.getDictLabel()); + } + PopMenu.show(binding.layoutType, menus) + .setBackgroundColorRes(R.color.white) + .setWidth(DensityUtils.dp2px(mContext, 100)) + .setOnMenuItemClickListener((dialog, text, index) -> { + selectType = typeData.get(index); + setText(binding.tvType, selectType.getDictLabel()); + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + return false; + }).setItemDivider(new ItemDivider(15, 15, 1)); + } + + private void getGridData() { + RxHttp.get(Api.LAND_GRID_LIST) + .add("regionCode", selectRegion.getAreaCode()) + .asResponse(LandGridEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + hideLoading(); + if (ArrayUtil.isEmpty(data.getRecords())) { + showToast("当前区域下没有网格,请重新选择"); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); + } else { + landGridData = data; + showLandGridDialog(); + } + }, (OnError) error -> showToast(error.getErrorMsg())); + } + + private void showRegionDialog() { + if (landRegionPickerView == null) { + List> subLandData = new ArrayList<>(); + for (LandAreaRegionEntity itemData : landAreaRegionData.get(0).getAreaChildVOS()) { + subLandData.add(itemData.getAreaChildVOS()); + } + + landRegionPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectRegion = landAreaRegionData.get(0).getAreaChildVOS().get(options1).getAreaChildVOS().get(options2); + Hawk.put(Constant.SELECT_REGION, selectRegion); + selectGrid = null; + Hawk.delete(Constant.SELECT_GRID); + getGridData(); + }).setTitleText("土地区域选择").setContentTextSize(20) + .setSelectOptions(0, 0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) //设置外部遮罩颜色 + .addOnCancelClickListener(view -> finish()) + .build(); + + landRegionPickerView.setPicker(landAreaRegionData.get(0).getAreaChildVOS(), subLandData);//二级选择器 + } + landRegionPickerView.show(); + } + + private void showGridNoticeMsg() { + MessageDialog.show("选择网格", "不继续选择网格信息了吗?", "确定", "取消") + .setOkButton((baseDialog, v1) -> { + finish(); + return false; + }); + } + + private void showLandGridDialog() { + if (landGridPickerView == null) { + landGridPickerView = new OptionsPickerBuilder(this, (options1, options2, options3, v) -> { + selectGrid = landGridData.getRecords().get(options1); + Hawk.put(Constant.SELECT_GRID, selectGrid); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + }).setTitleText("土地网格选择").setContentTextSize(20) + .setSelectOptions(0) + .setTitleBgColor(Color.WHITE) + .isRestoreItem(true) + .isCenterLabel(false) + .setOutSideColor(0x00000000) + .addOnCancelClickListener(view -> { + if (selectGrid == null) { + showGridNoticeMsg(); + } + }).build(); + + landGridPickerView.setPicker(landGridData.getRecords()); + } + landGridPickerView.show(); + } + + private void requestData(boolean loadmore) { + UserInfoEntity userInfo = AppConfig.getInstance().getUserInfo(); + RxHttpNoBodyParam http; + if (userInfo.isAdmin()) { + http = RxHttp.get(Api.INSPECTION_LIST_ADMIN); + } else { + http = RxHttp.get(Api.INSPECTION_LIST_GENERAL); + } + if (selectType != null && !TextUtils.isEmpty(selectType.getDictValue())) { + http.add("inspectionTypeCode", selectType.getDictValue()); + } + http.add("gridId", selectGrid.getId()) + .add("current", currentPageIndex) + .add("size", Api.SIZE_PAGE) + .asResponse(InspectionListEntity.class) + .as(RxLife.asOnMain(this)) + .subscribe(data -> { + if (loadmore) { + binding.refreshRecycler.finishLoadMore(); + } + if (!ArrayUtil.isEmpty(data.getRecords())) { + if (loadmore) { + mAdapter.addData(data.getRecords()); + } else { + mAdapter.setNewData(data.getRecords()); + } + currentPageIndex += 1; + if (ArrayUtil.size(data.getRecords()) < Api.SIZE_PAGE) { + binding.refreshRecycler.setNoMoreData(true); + } else { + binding.refreshRecycler.setNoMoreData(false); + } + binding.refreshRecycler.showContent(); + } else { + binding.refreshRecycler.showError(); + binding.refreshRecycler.setNoMoreData(true); + } + }, (OnError) error -> { + binding.refreshRecycler.showError(); + binding.refreshRecycler.setNoMoreData(true); + ToastUtil.showLongToast(error.getErrorMsg()); + }); + } + + private class InspectionListAdapter extends BaseQuickAdapter { + + public InspectionListAdapter() { + super(R.layout.item_inspection); + } + + @Override + protected void convert(@NonNull BaseViewHolder holder, InspectionListEntity.RecordsEntity entity) { + holder.setText(R.id.tvName, entity.getTaskName()); + holder.setText(R.id.tvType, entity.getInspectionType()); + holder.setText(R.id.tvStatus, entity.getInspectionStatusName()); + holder.setText(R.id.tvTaskCode, "任务编号:" + entity.getTaskCode()); + holder.setText(R.id.tvTaskMembers, entity.getTaskMembers()); + holder.setText(R.id.tvTaskTarget, entity.getInspectionTarget()); + if (entity.getInspectionStatus().equals("-1")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_green_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_green)); + } else if (entity.getInspectionStatus().equals("00")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_blue_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_blue)); + } else if (entity.getInspectionStatus().equals("01")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_orange_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_txt_orange)); + } else if (entity.getInspectionStatus().equals("02")) { + holder.setBackgroundRes(R.id.tvStatus, R.drawable.bg_container_light_gray_raduis_2); + holder.setTextColor(R.id.tvStatus, getResColor(R.color.color_tv_content)); + } + + } + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onMessageReceive(EventMessage message) { + if (null != message && !TextUtils.isEmpty(message.getLabel())) { + if (EventConstant.REFRESH_LIST.equals(message.getLabel())) { + binding.refreshRecycler.showLoading(); + currentPageIndex = 1; + requestData(false); + } + } + } + + @Override + protected void onDestroy() { + EventBus.getDefault().unregister(this); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java index 4ff8395..57b370c 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanActivity.java @@ -92,19 +92,13 @@ public class PlantPlanActivity extends BaseActivity { showRegionDialog(); } }); - binding.layoutGrid.setOnClickListener(new SingleClickListener() { - @Override - protected void onSingleClick(View v) { - showLandGridDialog(); - } - }); binding.layoutPlanSummarize.setOnClickListener(new SingleClickListener() { @Override protected void onSingleClick(View v) { goList(); } }); - binding.layoutPlanSummarize.setOnClickListener(new SingleClickListener() { + binding.layoutGridProgress.setOnClickListener(new SingleClickListener() { @Override protected void onSingleClick(View v) { goList(); @@ -122,16 +116,13 @@ public class PlantPlanActivity extends BaseActivity { @Override protected void onApplyData() { getRegionData(); - if (selectRegion != null) { - getGridData(); - } if (selectRegion != null && selectGrid != null) { getPlantPlanData(); } } private void showRegionNoticeMsg() { - MessageDialog.show("选择区域", "请先选择区域信息", "确定", "取消") + MessageDialog.show("选择区域", "请先选择网格区域信息", "确定", "取消") .setOkButton((baseDialog, v1) -> { showRegionDialog(); return false; @@ -148,7 +139,7 @@ public class PlantPlanActivity extends BaseActivity { .as(RxLife.asOnMain(this)) .subscribe(data -> { landAreaRegionData = data; - if (selectRegion == null) { + if (selectRegion == null || selectGrid == null) { showRegionNoticeMsg(); } }, (OnError) error -> showToast(error.getErrorMsg())); @@ -163,12 +154,10 @@ public class PlantPlanActivity extends BaseActivity { hideLoading(); if (ArrayUtil.isEmpty(data.getRecords())) { showToast("当前区域下没有网格,请重新选择"); - binding.layoutGrid.postDelayed(() -> showRegionDialog(), 500); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); } else { landGridData = data; - if (selectGrid == null) { - showLandGridDialog(); - } + showLandGridDialog(); } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -185,7 +174,6 @@ public class PlantPlanActivity extends BaseActivity { Hawk.put(Constant.SELECT_REGION, selectRegion); selectGrid = null; Hawk.delete(Constant.SELECT_GRID); - showLoading(); getGridData(); }).setTitleText("土地区域选择").setContentTextSize(20) .setSelectOptions(0, 0) @@ -249,8 +237,7 @@ public class PlantPlanActivity extends BaseActivity { } private void initView() { - setText(binding.tvRegion, selectRegion.getAreaName()); - setText(binding.tvGrid, selectGrid.getGridName()); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); setText(binding.tvYear, DateUtils.getCurrentYear() + "年种植计划"); setText(binding.tvPlanArea, String.valueOf(mData.getTotal().getTotalPlanArea())); setText(binding.tvRealArea, String.valueOf(mData.getTotal().getTotalActualArea())); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java index 77f4c38..f93f75a 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/PlantPlanDetailActivity.java @@ -8,9 +8,11 @@ import com.tairui.gov_affairs_cloud.entity.Api; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.land.entity.PlantPlanDetailEntity; import com.tairui.gov_affairs_cloud.util.AppUtil; +import com.tairui.gov_affairs_cloud.util.IntentUtil; import com.tairui.gov_affairs_cloud.util.SingleClickListener; import com.tairui.gov_affairs_cloud.util.glide.GlideLoader; +import android.os.Bundle; import android.text.TextUtils; import android.view.View; import rxhttp.RxHttp; @@ -44,13 +46,17 @@ public class PlantPlanDetailActivity extends BaseActivity { - showRegionDialog(); - return false; - }).setCancelButton((dialog, v) -> { - finish(); - return false; - }); - } - private void getRegionData() { RxHttp.get(Api.LAND_AREA_REGION) .add("areaCode", "530926") @@ -170,9 +156,6 @@ public class PlantPlanListActivity extends BaseActivity { landAreaRegionData = data; - if (selectRegion == null) { - showRegionNoticeMsg(); - } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -216,12 +199,10 @@ public class PlantPlanListActivity extends BaseActivity showRegionDialog(), 500); + binding.layoutRegion.postDelayed(() -> showRegionDialog(), 500); } else { landGridData = data; - if (selectGrid == null) { - showLandGridDialog(); - } + showLandGridDialog(); } }, (OnError) error -> showToast(error.getErrorMsg())); } @@ -238,13 +219,12 @@ public class PlantPlanListActivity extends BaseActivity finish()) .build(); @@ -266,6 +246,7 @@ public class PlantPlanListActivity extends BaseActivity { selectGrid = landGridData.getRecords().get(options1); + setText(binding.tvRegion, selectRegion.getAreaName() + "-" + selectGrid.getGridName()); Hawk.put(Constant.SELECT_GRID, selectGrid); binding.refreshRecycler.showLoading(); currentPageIndex = 1; @@ -372,4 +353,20 @@ public class PlantPlanListActivity extends BaseActivity records; + @SerializedName("orders") + private List orders; + + public Integer getTotal() { + return total; + } + + public void setTotal(Integer total) { + this.total = total; + } + + public Integer getSize() { + return size; + } + + public void setSize(Integer size) { + this.size = size; + } + + public Integer getCurrent() { + return current; + } + + public void setCurrent(Integer current) { + this.current = current; + } + + public Boolean isOptimizeCountSql() { + return optimizeCountSql; + } + + public void setOptimizeCountSql(Boolean optimizeCountSql) { + this.optimizeCountSql = optimizeCountSql; + } + + public Boolean isSearchCount() { + return searchCount; + } + + public void setSearchCount(Boolean searchCount) { + this.searchCount = searchCount; + } + + public Object getMaxLimit() { + return maxLimit; + } + + public void setMaxLimit(Object maxLimit) { + this.maxLimit = maxLimit; + } + + public Object getCountId() { + return countId; + } + + public void setCountId(Object countId) { + this.countId = countId; + } + + public Integer getPages() { + return pages; + } + + public void setPages(Integer pages) { + this.pages = pages; + } + + public List getRecords() { + return records; + } + + public void setRecords(List records) { + this.records = records; + } + + public List getOrders() { + return orders; + } + + public void setOrders(List orders) { + this.orders = orders; + } + + public static class RecordsEntity implements Serializable { + @SerializedName("id") + private String id; + @SerializedName("taskCode") + private String taskCode; + @SerializedName("taskName") + private String taskName; + @SerializedName("taskMembers") + private String taskMembers; + @SerializedName("inspectionTypeCode") + private String inspectionTypeCode; + @SerializedName("inspectionType") + private String inspectionType; + @SerializedName("notes") + private String notes; + @SerializedName("inspectionTarget") + private String inspectionTarget; + @SerializedName("isIllegal") + private Object isIllegal; + @SerializedName("inspectionStatus") + private String inspectionStatus; + @SerializedName("inspectionStatusName") + private String inspectionStatusName; + @SerializedName("inspectionSituation") + private Object inspectionSituation; + @SerializedName("inspectionUsers") + private List inspectionUsers; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTaskCode() { + return taskCode; + } + + public void setTaskCode(String taskCode) { + this.taskCode = taskCode; + } + + public String getTaskName() { + return taskName; + } + + public void setTaskName(String taskName) { + this.taskName = taskName; + } + + public String getTaskMembers() { + return taskMembers; + } + + public void setTaskMembers(String taskMembers) { + this.taskMembers = taskMembers; + } + + public String getInspectionTypeCode() { + return inspectionTypeCode; + } + + public void setInspectionTypeCode(String inspectionTypeCode) { + this.inspectionTypeCode = inspectionTypeCode; + } + + public String getInspectionType() { + return inspectionType; + } + + public void setInspectionType(String inspectionType) { + this.inspectionType = inspectionType; + } + + public String getNotes() { + return notes; + } + + public void setNotes(String notes) { + this.notes = notes; + } + + public String getInspectionTarget() { + return inspectionTarget; + } + + public void setInspectionTarget(String inspectionTarget) { + this.inspectionTarget = inspectionTarget; + } + + public Object getIsIllegal() { + return isIllegal; + } + + public void setIsIllegal(Object isIllegal) { + this.isIllegal = isIllegal; + } + + public String getInspectionStatus() { + return inspectionStatus; + } + + public void setInspectionStatus(String inspectionStatus) { + this.inspectionStatus = inspectionStatus; + } + + public String getInspectionStatusName() { + return inspectionStatusName; + } + + public void setInspectionStatusName(String inspectionStatusName) { + this.inspectionStatusName = inspectionStatusName; + } + + public Object getInspectionSituation() { + return inspectionSituation; + } + + public void setInspectionSituation(Object inspectionSituation) { + this.inspectionSituation = inspectionSituation; + } + + public List getInspectionUsers() { + return inspectionUsers; + } + + public void setInspectionUsers(List inspectionUsers) { + this.inspectionUsers = inspectionUsers; + } + + public static class InspectionUsersEntity implements Serializable{ + @SerializedName("createTime") + private String createTime; + @SerializedName("createUser") + private String createUser; + @SerializedName("updateTime") + private Object updateTime; + @SerializedName("updateUser") + private Object updateUser; + @SerializedName("tenantId") + private Integer tenantId; + @SerializedName("id") + private Long id; + @SerializedName("inspectionId") + private Long inspectionId; + @SerializedName("userId") + private Long userId; + @SerializedName("userName") + private String userName; + @SerializedName("deleteFlag") + private String deleteFlag; + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public Object getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Object updateTime) { + this.updateTime = updateTime; + } + + public Object getUpdateUser() { + return updateUser; + } + + public void setUpdateUser(Object updateUser) { + this.updateUser = updateUser; + } + + public Integer getTenantId() { + return tenantId; + } + + public void setTenantId(Integer tenantId) { + this.tenantId = tenantId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getInspectionId() { + return inspectionId; + } + + public void setInspectionId(Long inspectionId) { + this.inspectionId = inspectionId; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getDeleteFlag() { + return deleteFlag; + } + + public void setDeleteFlag(String deleteFlag) { + this.deleteFlag = deleteFlag; + } + } + } +} diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java index f0b8378..846119c 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/land/entity/PlantPlanDetailEntity.java @@ -1,8 +1,10 @@ package com.tairui.gov_affairs_cloud.ui.land.entity; +import java.io.Serializable; + import com.google.gson.annotations.SerializedName; -public class PlantPlanDetailEntity { +public class PlantPlanDetailEntity implements Serializable { @SerializedName("regionCode") private String regionCode; @@ -105,7 +107,7 @@ public class PlantPlanDetailEntity { this.currentProgress = currentProgress; } - public static class PlanParametersEntity { + public static class PlanParametersEntity implements Serializable{ @SerializedName("plantingArea") private Double plantingArea; @SerializedName("plantingMonths") @@ -148,7 +150,7 @@ public class PlantPlanDetailEntity { } } - public static class ActualParametersEntity { + public static class ActualParametersEntity implements Serializable{ @SerializedName("plantingArea") private Double plantingArea; @SerializedName("plantingMonths") diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java index ffa1cb8..e38502e 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/MyFragment.java @@ -4,8 +4,10 @@ import com.kongzue.dialogx.dialogs.MessageDialog; import com.orhanobut.hawk.Hawk; import com.rxjava.rxlife.RxLife; import com.tairui.gov_affairs_cloud.base.BaseFragment; +import com.tairui.gov_affairs_cloud.config.AppConfig; import com.tairui.gov_affairs_cloud.databinding.FragmentMyBinding; import com.tairui.gov_affairs_cloud.entity.Api; +import com.tairui.gov_affairs_cloud.entity.Constant; import com.tairui.gov_affairs_cloud.http.OnError; import com.tairui.gov_affairs_cloud.ui.login.LoginActivity; import com.tairui.gov_affairs_cloud.ui.my.entity.UserInfoEntity; @@ -38,7 +40,8 @@ public class MyFragment extends BaseFragment { protected void onSingleClick(View v) { MessageDialog.show("安全退出", "确定要退出登录吗?", "确定", "取消") .setOkButton((baseDialog, v1) -> { - Hawk.put("token",""); + Hawk.delete(Constant.TOKEN); + Hawk.delete(Constant.USER_INFO); IntentUtil.startActivity(mContext, LoginActivity.class, null); getActivity().finish(); return false; @@ -49,10 +52,21 @@ public class MyFragment extends BaseFragment { @Override protected void onApplyData() { + if (AppConfig.getInstance().getUserInfo() == null) { + getUserInfo(); + } else { + UserInfoEntity userInfo = AppConfig.getInstance().getUserInfo(); + initView(userInfo); + } + } + + private void getUserInfo() { RxHttp.get(Api.USER_INFO) .asResponse(UserInfoEntity.class) .as(RxLife.asOnMain(this)) .subscribe(data -> { + AppConfig.getInstance().setUserInfo(data); + Hawk.put(Constant.USER_INFO, data); initView(data); }, (OnError) error -> { showToast(error.getErrorMsg()); diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java index 1878ed1..847c3f1 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/my/entity/UserInfoEntity.java @@ -6,94 +6,104 @@ import com.google.gson.annotations.SerializedName; public class UserInfoEntity implements Serializable { - @SerializedName("username") - private String username; - @SerializedName("organization") - private Object organization; - @SerializedName("departmental") - private String departmental; - @SerializedName("phone") - private String phone; - @SerializedName("headPic") - private String headPic; - @SerializedName("no") - private String no; - @SerializedName("sex") - private String sex; - @SerializedName("email") - private String email; - @SerializedName("todoCount") - private Integer todoCount; + @SerializedName("username") + private String username; + @SerializedName("organization") + private Object organization; + @SerializedName("departmental") + private String departmental; + @SerializedName("phone") + private String phone; + @SerializedName("headPic") + private String headPic; + @SerializedName("no") + private String no; + @SerializedName("sex") + private String sex; + @SerializedName("email") + private String email; + @SerializedName("todoCount") + private Integer todoCount; + @SerializedName("admin") + private boolean admin; - public String getUsername() { - return username; - } + public boolean isAdmin() { + return admin; + } - public void setUsername(String username) { - this.username = username; - } + public void setAdmin(boolean admin) { + this.admin = admin; + } - public Object getOrganization() { - return organization; - } + public String getUsername() { + return username; + } - public void setOrganization(Object organization) { - this.organization = organization; - } + public void setUsername(String username) { + this.username = username; + } - public String getDepartmental() { - return departmental; - } + public Object getOrganization() { + return organization; + } - public void setDepartmental(String departmental) { - this.departmental = departmental; - } + public void setOrganization(Object organization) { + this.organization = organization; + } - public String getPhone() { - return phone; - } + public String getDepartmental() { + return departmental; + } - public void setPhone(String phone) { - this.phone = phone; - } + public void setDepartmental(String departmental) { + this.departmental = departmental; + } - public String getHeadPic() { - return headPic; - } + public String getPhone() { + return phone; + } - public void setHeadPic(String headPic) { - this.headPic = headPic; - } + public void setPhone(String phone) { + this.phone = phone; + } - public String getNo() { - return no; - } + public String getHeadPic() { + return headPic; + } - public void setNo(String no) { - this.no = no; - } + public void setHeadPic(String headPic) { + this.headPic = headPic; + } - public String getSex() { - return sex; - } + public String getNo() { + return no; + } - public void setSex(String sex) { - this.sex = sex; - } + public void setNo(String no) { + this.no = no; + } - public String getEmail() { - return email; - } + public String getSex() { + return sex; + } - public void setEmail(String email) { - this.email = email; - } + public void setSex(String sex) { + this.sex = sex; + } - public Integer getTodoCount() { - return todoCount; - } + public String getEmail() { + return email; + } - public void setTodoCount(Integer todoCount) { - this.todoCount = todoCount; - } + public void setEmail(String email) { + this.email = email; + } + + public Integer getTodoCount() { + return todoCount; + } + + public void setTodoCount(Integer todoCount) { + this.todoCount = todoCount; + } } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java index 3f41ea8..f049c63 100644 --- a/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/ui/workspace/WorkSpaceFragment.java @@ -9,6 +9,7 @@ import com.tairui.gov_affairs_cloud.R; import com.tairui.gov_affairs_cloud.base.BaseFragment; import com.tairui.gov_affairs_cloud.databinding.FragmentWorkspaceBinding; import com.tairui.gov_affairs_cloud.ui.land.GridInfoActivity; +import com.tairui.gov_affairs_cloud.ui.land.InspectionListActivity; import com.tairui.gov_affairs_cloud.ui.land.LandActivity; import com.tairui.gov_affairs_cloud.ui.land.LandResouceInfoActivity; import com.tairui.gov_affairs_cloud.ui.land.PlantPlanActivity; @@ -69,6 +70,8 @@ public class WorkSpaceFragment extends BaseFragment { IntentUtil.startActivity(mContext, PlantPlanActivity.class); } else if (_id == 6) { IntentUtil.startActivity(mContext, LandResouceInfoActivity.class); + } else if (_id == 7) { + IntentUtil.startActivity(mContext, InspectionListActivity.class); } }); } diff --git a/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java b/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java new file mode 100644 index 0000000..285e496 --- /dev/null +++ b/app/src/main/java/com/tairui/gov_affairs_cloud/util/DecimalDigitsInputFilter.java @@ -0,0 +1,33 @@ +package com.tairui.gov_affairs_cloud.util; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import android.text.InputFilter; +import android.text.Spanned; + +public class DecimalDigitsInputFilter implements InputFilter { + // 正则表达式,用于匹配数字和小数点 + private Pattern mPattern; + + public DecimalDigitsInputFilter() { + // 允许输入数字和最多一个小数点 + mPattern = Pattern.compile("[0-9]*+(\\.[0-9]*)?"); + } + + @Override + public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { + // 构建输入的文本 + String newText = dest.subSequence(0, dstart) + source.subSequence(start, end).toString() + dest.subSequence(dend, dest.length()); + + // 检查是否符合正则表达式 + Matcher matcher = mPattern.matcher(newText); + if (!matcher.matches()) { + // 不符合规则,返回空字符串,即不接受输入 + return ""; + } + + // 符合规则,允许输入 + return null; + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml new file mode 100644 index 0000000..777ae8f --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_gray_raduis_2.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml new file mode 100644 index 0000000..0c182f6 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_green_raduis_2.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml b/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml new file mode 100644 index 0000000..57b67e6 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_light_orange_raduis_2.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml b/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml new file mode 100644 index 0000000..9c1ff96 --- /dev/null +++ b/app/src/main/res/drawable/bg_container_white_raduis_2_gray_border.xml @@ -0,0 +1,14 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_add_plant_plan.xml b/app/src/main/res/layout/activity_add_plant_plan.xml index 312089b..edbc018 100644 --- a/app/src/main/res/layout/activity_add_plant_plan.xml +++ b/app/src/main/res/layout/activity_add_plant_plan.xml @@ -56,46 +56,6 @@ android:paddingLeft="16dp" android:paddingRight="16dp"> - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_edit_plant_plan.xml b/app/src/main/res/layout/activity_edit_plant_plan.xml new file mode 100644 index 0000000..d140ccc --- /dev/null +++ b/app/src/main/res/layout/activity_edit_plant_plan.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspection_detail.xml b/app/src/main/res/layout/activity_inspection_detail.xml new file mode 100644 index 0000000..6b3123c --- /dev/null +++ b/app/src/main/res/layout/activity_inspection_detail.xml @@ -0,0 +1,342 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_inspection_list.xml b/app/src/main/res/layout/activity_inspection_list.xml new file mode 100644 index 0000000..3ba96b8 --- /dev/null +++ b/app/src/main/res/layout/activity_inspection_list.xml @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_plant_plan.xml b/app/src/main/res/layout/activity_plant_plan.xml index 946bccd..308a7e0 100644 --- a/app/src/main/res/layout/activity_plant_plan.xml +++ b/app/src/main/res/layout/activity_plant_plan.xml @@ -54,68 +54,37 @@ android:layout_marginRight="16dp" android:orientation="vertical"> + + android:gravity="left|center_vertical" + android:paddingTop="12dp" + android:paddingBottom="12dp"> - + + + android:ellipsize="end" + android:maxLines="1" + android:textColor="@color/color_txt_black" + android:textSize="14sp" + tools:text="耿马镇白马社区耿马镇白马社区耿马镇白马社区耿马镇白马社区" /> - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/activity_plant_plan_list.xml b/app/src/main/res/layout/activity_plant_plan_list.xml index 35f865b..330b7a7 100644 --- a/app/src/main/res/layout/activity_plant_plan_list.xml +++ b/app/src/main/res/layout/activity_plant_plan_list.xml @@ -39,69 +39,37 @@ + android:layout_marginLeft="16dp" + android:layout_marginRight="16dp" + android:gravity="left|center_vertical" + android:paddingTop="12dp" + android:paddingBottom="12dp"> - + + + android:ellipsize="end" + android:maxLines="1" + android:textColor="@color/color_txt_black" + android:textSize="14sp" + tools:text="耿马镇白马社区耿马镇白马社区耿马镇白马社区耿马镇白马社区" /> - - - - - - - - - - - - - - - - + diff --git a/app/src/main/res/layout/item_inspection.xml b/app/src/main/res/layout/item_inspection.xml new file mode 100644 index 0000000..f143913 --- /dev/null +++ b/app/src/main/res/layout/item_inspection.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/mipmap-xxhdpi/ic_cancel.png b/app/src/main/res/mipmap-xxhdpi/ic_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..4221208c5fda88c8981574b5e26fb025ccb07e50 GIT binary patch literal 1341 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 M07*qoM6N<$g6J`My#N3J literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_location_small.png b/app/src/main/res/mipmap-xxhdpi/ic_location_small.png new file mode 100644 index 0000000000000000000000000000000000000000..1aec373a7fabe497c626fd1da2e4bc954cc35b3a GIT binary patch literal 2387 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 FV1l^$iq-%C literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_member.png b/app/src/main/res/mipmap-xxhdpi/ic_member.png new file mode 100644 index 0000000000000000000000000000000000000000..ddd9bfb2f92ee085b6deaa4f99b25ee9cb125f7f GIT binary patch literal 2222 zcmV;f2vPTmP)Px-Xh}ptR9HvVSPgJoRTciudz*F>L|QCbCsBR|9kl**;#3qX78pT_jMdU=#{nxa zmTDVqCY$%(ZaX|NyYIc-G-7J00mN1q{~|3q;FN(W$Y^oIDn+D#iWOWeSX(G2+3oJV z$9FPsYnmq6mjm=e&{t5;8NZf>3j;9W%2z|8xV zQcq+una5vk156rdZ*T7#2L=XOiO2>pAHYdtfZE5*TZrg~)22;(y1l)9XsW;`1=RQb z`9#zP;N#3ZBgWyc0QfEu{a7rnwI-$1fl8&a*LB_h#8`i1N^GFnZ1y74G`|Dj>=6e% zXc)%UYPI^PVHhtF(QIaZKQn)Uh~5*;s{+^$z=-}n3}AqW?o~={N~hCL#sM4)sPFr4 z2k=t>^N6UTwZ2;^wPx+wwSOP$5Z84R$z<{}0G{x7JRn50pPAPbi^cv88#a_D0vs1; z8bDSy67HF%X?J#Z?yF}B-}lA38;R&6(cE1C{uqHjH~OCdyrEPo^|-EE8uwE54l5K2 zCn=@=3E*UAe!N^Rf7Er|m+Gynea~jIt)^-I96&RGhnRVhX`0iu))y1edS;#l;2;rQ zYgyLTsQ^7!DfJuKfQULQ%UT~7q|Ebu{}ceX0=NRe--zgZ%d-CAx~|dG)U;e{{Vf1* z0I;d4scB7HTicivsQdK3?_Ubw7jmf9`to!-efMO5_V)Hp9~caPd;%i)osY z)kMJTDV0j^b6r=`Dm>3S+c1p#nfY`8n@!VPl}e=sjtgkynPSn|0Jhq;y*M^X06`G6 zF!T1vvmdZ+`@-7#?(Xh+)oS%;AvN9_#?tOmspQlyG5UBne14hM`Uf&O z*2w4cy;^GlQ#DOfn2{DlPIkWQx?`qKIVhGzJSEb>C&%_PP=Llt^%i{H?W~lTN3fm@-h2WXWXm`tbSI z0vHOb%~g)$Y@TT2B}E(R9ZPvftJl?=bEM|l28Qmuar_(WHOl-WG_+v03IFYUQCS} z8>q;&0|yS=7jpGuqR7M8cwr`!89r>R5d?uHR7t#(+Go!=&qbc+tstTvBAUj` zJ51ATPo+{vwR*(zVTfu~O5HT753nc7RFct#$AmzImxm4=YEeo#M08c8phWp}7mG!A zqEy<|)zzFxBt$iRC_3v!BKk(9QrWh9_wIc)zD6%46|S_1J{MY3dI&-XX;O3y4GnFU zGJ0H~zVFXr<|RUOB6?eNm~iP?orz?= zVHhG>t^^=uw49fkIdkT1#{iWa+|tsr5HP4nugDwTRlhO~O*ng8eIMAMo1!!^nc z1C2m_FH+(1uN_LMug;n^>!}qhRvdNHIDqQSk>{;cD)X6HWS(THdgCsVmJ1PWimF86 z&bEezhU?nf+Yi)RJ=O1H7)T<@pCg};?X_VTI}?dST7Zhm?vA{2yVhFt=25|Rs(>b1 zAAyx5B98WoVHlT=P7cF7^?m;-0Ph6wqG_5JjSkAMCCJ*|`F#EpT5AzJ5>K}~jwAi9 zqlN$-46|dSv=l>~IV{6Yz-WxLX)_W1-mI)^GHb$mSqLU0PX4N wX|7Z%(!yRErN|S7xo8;1dLp`ctR}>N0Ylx`x))%~b^rhX07*qoM6N<$f;<&9KL7v# literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_publish_white.png b/app/src/main/res/mipmap-xxhdpi/ic_publish_white.png new file mode 100644 index 0000000000000000000000000000000000000000..022b5e242c16c71b9893091b055a2e123973a00f GIT binary patch literal 1868 zcmV-S2ebHzP)Px+21!IgRA@uhS!aw@RS^C@OYFhkV?lqISg@do@Iw@hF``CAAvQpcD1s6Z z#KeLMii(Izz}PU@D;lF&BPy1lF=#NZ1#Co(Wjx=EH*c*U?kuB}g0hrka0EPm%2taoL z>tqgmMVAY}%+><11%N{VTnk{YI#sfuO9fzNI{-M&OQjEhbz3R%DP1Cfq*N~OQc>xY zvDMeaW~RgI24EimV*ngh#^cPI0jnhgX0{%HBLJKU;1~ewH{kql0D5+60N$X7cyk^A zU^4(&AASe$kvDI>Qd$C_U#A3MW*Y<89l&J(P6VI~r1md>AA&=#0k|8$B>;|27W@t1 z7KhZW{PQ=pSBD1RrP4o~=t+()I`ORi3Sf2!@F73>u>j6ZF#it#_W+m$U_tWvTrqNo z1>o#C4#43BrJ_@v7oc)HfKN!SFta-{&MPzb0=V2W@^BLUG!fh?4ZzHV+uH!R7{ECI zHpw}0HQ(m|ZX)@pzBe;5?4Uqkw*%NTdFDN3kK~u33~%<*syqVV8j|BzSpa6XrxTFM zMgM2*PXI55@8$q_isbURz|8sup>`jDU6O|u2CXxk|oH*l}y3pMrCp%m{TsXkGVLM`nV?Hd5cl5A>o z0Dj`90XV&&RP+*^s7hrPNu6emIkZl4ZJ(;l34t5NlB_yxW<5gryq|3H1%N&zn@a~^ zW@<<^ru5481?;&rX!Yv>JRw{s`A?qneyZ0wx};?Fh}XS_m8zMUGA*c$_OT?0_OBa& z>lI;lPiN2Gp_V0gQ~L|Rw|?T2Nh-aC=9ASaj_Yxqdg3`{H7{dkCRr_hh&G#~P^*T< z)2QWml(xe1EPHD0B6oZaNu5evbLXXjL`*v-iv_DgNs6dy%*=%UgOe}DkQ6A?2H*`N zD7@5>K{6m~DwWCZd^1U9p;a?8&9u(~(1;kbuX2$RZ7M1`GZT94pS)loNip&N0eFoc z)}=G*U+ELGpu20A?mB zdz9n2HqT>E;jWr!CP`s>n=D9#Edkt?DFcy_vN%C9qD}xBDd#68CphjFVOaram=N`A zxX3oO7AsYv@x}FCRL229q|~LFFzq9il1f3+qR`AtJ)<7bA;=bz+&4a;0DdVrb&=5d zlDH(rrVW{ysrjZR?-1fh9*AkbYi(0A8|E5mLti_eWL0V_fH#6h>6^3B*RD^5FhZL) zo0(}}X_$C=+CzjiIKbeiWi~XkD_pV0yP$DFil}NTrT}zNG&8(NY?rl&@wW!@nnqGI zU&_qvz%Zac=!g@aS?0|9WSOiwBC32xCNCXE^8RW7`llqz>cqsJua;n02{gSVovPGN zLY(QPPGF^9>PyW7g7u24p`m+4g<8o#x|!=7E!GvD?q%{!I!Ba0Bd-DdFmBA5s-}eX z;+E28W>U8*!GrxF!FX?yBEE{%NC{_4)vUT-!YWT`3IZpRR7P4@y{U@i&!xRznE|QQ zmqLl}=FbUOjwJb2VE~zoNVEw8PxVHOjihBuNLB}sGE-GsoUhc&${|TC9N||3kpQ5o za7(FCGgCRm(o#mG(P0-n&XZQDOLGV@4=duGl5QQM z2GTkSL1n6ib!q^fjYx>PUn;r))}@xRl>W%qm!yJQy#b_e_bYe_Lj9y#R9f+o?s*pp zot}Zbnki9Qy5)<%%ygX$WU^7Ov|7x;>2qBo1KF%3rKNkSA9Wv_PGKDpz^?k4DADb@ z$xvOl%lsy9S-q>5Rh0o<_zn+0z}?^%y+d?&-!AV#35353F #666666 #444444 + @color/color_blue + #FFA423 #FF4E3D #2AD848 #999999