土地巡查新增

This commit is contained in:
tongchao 2025-06-09 16:41:37 +08:00
parent ca6e8ce2a1
commit c5e71ed6b5
14 changed files with 471 additions and 64 deletions

View File

@ -173,6 +173,11 @@
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.land.AddInspectionActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:exported="false"
android:screenOrientation="portrait" />
<activity
android:name=".ui.photoview.PhotoViewActivty"

View File

@ -60,5 +60,7 @@ public class Api {
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";
public static final String INSPECTION_ADD = BASE_HOST + "/land-resource/landInspection/save";
public static final String GRID_MEMBER = BASE_HOST + "/land-resource/grid-member/current-user";
}

View File

@ -121,7 +121,8 @@ public class HomeFragment extends BaseFragment<FragmentHomeBinding> {
private void initView(HomeEntity data) {
setText(binding.tvTodoCount, data.getTodoCount().toString());
setText(binding.userNameTv, data.getUserInfo().getUsername());
setText(binding.userDepartmentTv, data.getUserInfo().getOrganization() + " - " + data.getUserInfo().getDepartmental());
setText(binding.userDepartmentTv, data.getUserInfo().getDepartmental());
// setText(binding.userDepartmentTv, data.getUserInfo().getOrganization() + " - " + data.getUserInfo().getDepartmental());
setText(binding.userTelTv, data.getUserInfo().getPhone() + " " + data.getUserInfo().getNo());
GlideLoader.loadCircle(binding.userHeadIv, data.getUserInfo().getHeadPic());
funcAdapter.setNewData(data.getFunction());

View File

@ -1,14 +1,52 @@
package com.tairui.gov_affairs_cloud.ui.land;
import java.util.ArrayList;
import java.util.List;
import org.greenrobot.eventbus.EventBus;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.google.gson.JsonArray;
import com.kongzue.dialogx.dialogs.BottomMenu;
import com.kongzue.dialogx.dialogs.PopMenu;
import com.kongzue.dialogx.dialogs.PopTip;
import com.kongzue.dialogx.interfaces.OnMenuButtonClickListener;
import com.kongzue.dialogx.interfaces.OnMenuItemSelectListener;
import com.kongzue.dialogx.util.ItemDivider;
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.databinding.ActivityAddInspectionBinding;
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.DictDataEntity;
import com.tairui.gov_affairs_cloud.ui.land.entity.GridMemberEntity;
import com.tairui.gov_affairs_cloud.util.ArrayUtil;
import com.tairui.gov_affairs_cloud.util.DensityUtils;
import com.tairui.gov_affairs_cloud.util.SingleClickListener;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import rxhttp.RxHttp;
public class AddInspectionActivity extends BaseActivity<ActivityAddInspectionBinding> {
private List<GridMemberEntity.MemberListEntity> membersData;
private List<GridMemberEntity.MemberListEntity> selectMembersData;
private List<CharSequence> multiSelectMenuText;
private int[] cacheSelectMenuIndexArray;
private List<Integer> selectMenuIndexArray = new ArrayList<>();
private MemberAdapter memberAdapter;
private List<DictDataEntity> typeData;
private DictDataEntity selectType;
@Override
protected Class<ActivityAddInspectionBinding> getBindingClass() {
return ActivityAddInspectionBinding.class;
@ -20,7 +58,10 @@ public class AddInspectionActivity extends BaseActivity<ActivityAddInspectionBin
@Override
protected void onFindView(Bundle savedInstanceState) {
binding.membersRecycler.setLayoutManager(new LinearLayoutManager(mContext, RecyclerView.HORIZONTAL, true));
binding.membersRecycler.setHasFixedSize(true);
memberAdapter = new MemberAdapter();
binding.membersRecycler.setAdapter(memberAdapter);
}
@Override
@ -31,6 +72,165 @@ public class AddInspectionActivity extends BaseActivity<ActivityAddInspectionBin
finish();
}
});
binding.btnAddMember.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
showMemeberDialog();
}
});
binding.layoutType.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
showTypeMenu();
}
});
binding.btnSubmit.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
checkSubmit();
}
});
memberAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter baseQuickAdapter, View view, int i) {
if (view.getId() == R.id.btnDelete) {
memberAdapter.remove(i);
selectMenuIndexArray.remove(i);
}
}
});
}
@Override
protected void onApplyData() {
getMemberList();
getInspectionTypeData();
}
private void showTypeMenu() {
List<CharSequence> menus = new ArrayList<>();
for (DictDataEntity item : typeData) {
menus.add(item.getDictLabel());
}
PopMenu.show(binding.tvType, menus)
.setBackgroundColorRes(R.color.white)
.setWidth(DensityUtils.dp2px(mContext, 100))
.setOnMenuItemClickListener((dialog, text, index) -> {
selectType = typeData.get(index);
setText(binding.tvType, selectType.getDictLabel());
return false;
}).setItemDivider(new ItemDivider(15, 15, 1));
}
private void getInspectionTypeData() {
RxHttp.get(Api.INSPECTION_TYPE)
.asResponseList(DictDataEntity.class)
.as(RxLife.asOnMain(this))
.subscribe(data -> {
typeData = data;
}, (OnError) error -> showToast(error.getErrorMsg()));
}
private void getMemberList() {
RxHttp.get(Api.GRID_MEMBER)
.asResponse(GridMemberEntity.class)
.as(RxLife.asOnMain(this))
.subscribe(data -> {
membersData = data.getMemberList();
multiSelectMenuText = new ArrayList<>();
for (int i = 0; i < membersData.size(); i++) {
multiSelectMenuText.add(membersData.get(i).getMemberName());
}
}, (OnError) error -> showToast(error.getErrorMsg()));
}
private void showMemeberDialog() {
BottomMenu.show(multiSelectMenuText).setTitle("请选择任务成员")
.setOnMenuItemClickListener(new OnMenuItemSelectListener<BottomMenu>() {
@Override
public void onMultiItemSelect(BottomMenu dialog, CharSequence[] text, int[] indexArray) {
cacheSelectMenuIndexArray = indexArray;
}
}).setOkButton("确定", (OnMenuButtonClickListener<BottomMenu>) (dialog, v) -> {
if (cacheSelectMenuIndexArray.length > 3) {
showError("最多允许选择3名任务成员");
} else if (cacheSelectMenuIndexArray.length <= 0) {
showError("至少选择1名任务成员");
} else {
selectMenuIndexArray.clear();
selectMembersData = new ArrayList<>();
for (int i : cacheSelectMenuIndexArray) {
selectMenuIndexArray.add(i);
selectMembersData.add(membersData.get(i));
}
cacheSelectMenuIndexArray = new int[1];
memberAdapter.setNewData(selectMembersData);
}
return false;
}).setSelection(selectMenuIndexArray);
}
private void checkSubmit() {
String taskCode = binding.inputTaskCode.getText().toString().trim();
if (TextUtils.isEmpty(taskCode)) {
showError("任务编号不能为空");
return;
}
String taskName = binding.inputTaskName.getText().toString().trim();
if (TextUtils.isEmpty(taskName)) {
showError("任务名称不能为空");
return;
}
if (ArrayUtil.isEmpty(selectMembersData)) {
showError("任务成员不能为空");
return;
}
if (selectType == null) {
showError("请选择任务类型");
return;
}
String taskTarget = binding.inputTaskTarget.getText().toString().trim();
if (TextUtils.isEmpty(taskTarget)) {
showError("任务对象不能为空");
return;
}
String taskNotes = binding.inputTaskNotes.getText().toString().trim();
JsonArray memeberIds = new JsonArray();
for (GridMemberEntity.MemberListEntity selectMembersDatum : selectMembersData) {
memeberIds.add(selectMembersDatum.getId());
}
showLoading();
RxHttp.postJson(Api.INSPECTION_ADD)
.add("taskCode", taskCode)
.add("taskName", taskName)
.add("taskUserIds", memeberIds)
.add("inspectionTypeCode", selectType.getDictValue())
.add("inspectionTarget", taskTarget)
.add("notes", taskNotes)
.asResponse(Boolean.class)
.as(RxLife.asOnMain(this))
.subscribe(data -> {
hideLoading();
PopTip.show("土地巡查信息新增成功").iconSuccess();
EventBus.getDefault().post(new EventMessage(EventConstant.REFRESH_LIST));
binding.btnSubmit.postDelayed(() -> finish(), 1000);
}, (OnError) error -> {
PopTip.show(error.getErrorMsg()).iconError();
hideLoading();
});
}
private class MemberAdapter extends BaseQuickAdapter<GridMemberEntity.MemberListEntity, BaseViewHolder> {
public MemberAdapter() {
super(R.layout.item_select_member);
}
@Override
protected void convert(@NonNull BaseViewHolder holder, GridMemberEntity.MemberListEntity entity) {
holder.setText(R.id.tvName, entity.getMemberName());
holder.addOnClickListener(R.id.btnDelete);
}
}
}

View File

@ -134,6 +134,12 @@ public class InspectionListActivity extends BaseActivity<ActivityInspectionListB
showStatusMenu();
}
});
binding.btnAdd.setOnClickListener(new SingleClickListener() {
@Override
protected void onSingleClick(View v) {
IntentUtil.startActivity(mContext, AddInspectionActivity.class);
}
});
}
@Override

View File

@ -0,0 +1,155 @@
package com.tairui.gov_affairs_cloud.ui.land.entity;
import java.util.List;
import com.google.gson.annotations.SerializedName;
public class GridMemberEntity {
@SerializedName("gridMemberInfo")
private Object gridMemberInfo;
@SerializedName("memberList")
private List<MemberListEntity> memberList;
@SerializedName("landList")
private List<LandListEntity> landList;
public Object getGridMemberInfo() {
return gridMemberInfo;
}
public void setGridMemberInfo(Object gridMemberInfo) {
this.gridMemberInfo = gridMemberInfo;
}
public List<MemberListEntity> getMemberList() {
return memberList;
}
public void setMemberList(List<MemberListEntity> memberList) {
this.memberList = memberList;
}
public List<LandListEntity> getLandList() {
return landList;
}
public void setLandList(List<LandListEntity> landList) {
this.landList = landList;
}
public static class MemberListEntity {
@SerializedName("gridId")
private String gridId;
@SerializedName("memberName")
private String memberName;
@SerializedName("adminFlag")
private String adminFlag;
@SerializedName("phone")
private String phone;
@SerializedName("id")
private String id;
@SerializedName("status")
private String status;
@SerializedName("gridName")
private Object gridName;
@SerializedName("gridAreaName")
private Object gridAreaName;
@SerializedName("gridAreaCode")
private Object gridAreaCode;
public String getGridId() {
return gridId;
}
public void setGridId(String gridId) {
this.gridId = gridId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
public String getAdminFlag() {
return adminFlag;
}
public void setAdminFlag(String adminFlag) {
this.adminFlag = adminFlag;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Object getGridName() {
return gridName;
}
public void setGridName(Object gridName) {
this.gridName = gridName;
}
public Object getGridAreaName() {
return gridAreaName;
}
public void setGridAreaName(Object gridAreaName) {
this.gridAreaName = gridAreaName;
}
public Object getGridAreaCode() {
return gridAreaCode;
}
public void setGridAreaCode(Object gridAreaCode) {
this.gridAreaCode = gridAreaCode;
}
}
public static class LandListEntity {
@SerializedName("id")
private String id;
@SerializedName("landName")
private String landName;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getLandName() {
return landName;
}
public void setLandName(String landName) {
this.landName = landName;
}
}
}

View File

@ -3,6 +3,7 @@ package com.tairui.gov_affairs_cloud.ui.login;
import com.google.gson.JsonObject;
import com.orhanobut.hawk.Hawk;
import com.rxjava.rxlife.RxLife;
import com.tairui.gov_affairs_cloud.BuildConfig;
import com.tairui.gov_affairs_cloud.base.BaseActivity;
import com.tairui.gov_affairs_cloud.databinding.ActivityLoginBinding;
import com.tairui.gov_affairs_cloud.entity.Api;
@ -30,6 +31,10 @@ public class LoginActivity extends BaseActivity<ActivityLoginBinding> {
// if (Hawk.contains(Constant.LOGIN_USER_NAME)) {
// setText(binding.inputUserName, Hawk.get(Constant.LOGIN_USER_NAME));
// }
if (BuildConfig.DEBUG) {
setText(binding.inputUserName, "admin");
setText(binding.inputUserPass, "admin123");
}
}
@Override

View File

@ -76,7 +76,8 @@ public class MyFragment extends BaseFragment<FragmentMyBinding> {
private void initView(UserInfoEntity data) {
setText(binding.tvTodoCount, data.getTodoCount().toString());
setText(binding.userNameTv, data.getUsername());
setText(binding.userDepartmentTv, data.getOrganization() + " - " + data.getDepartmental());
// setText(binding.userDepartmentTv, data.getOrganization() + " - " + data.getDepartmental());
setText(binding.userDepartmentTv, data.getDepartmental());
setText(binding.userTelTv, data.getPhone() + " " + data.getNo());
GlideLoader.loadCircle(binding.userHeadIv, data.getHeadPic());
}

View File

@ -102,15 +102,15 @@ public class WorkSpaceFragment extends BaseFragment<FragmentWorkspaceBinding> {
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(2);
itemFunc.setName("网格信息");
itemFunc.setIcon(R.mipmap.ic_workspace_func_2);
itemFunc.setId(6);
itemFunc.setName("土地信息");
itemFunc.setIcon(R.mipmap.ic_workspace_func_6);
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(3);
itemFunc.setName("种植计划");
itemFunc.setIcon(R.mipmap.ic_workspace_func_3);
itemFunc.setId(2);
itemFunc.setName("网格信息");
itemFunc.setIcon(R.mipmap.ic_workspace_func_2);
funcs.add(itemFunc);
// itemFunc = new WorkSpaceEntity.FuncsEntity();
@ -119,24 +119,18 @@ public class WorkSpaceFragment extends BaseFragment<FragmentWorkspaceBinding> {
// itemFunc.setIcon(R.mipmap.ic_workspace_func_4);
// funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(5);
itemFunc.setName("土地违规");
itemFunc.setIcon(R.mipmap.ic_workspace_func_5);
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(6);
itemFunc.setName("土地信息");
itemFunc.setIcon(R.mipmap.ic_workspace_func_6);
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(7);
itemFunc.setName("土地巡查");
itemFunc.setIcon(R.mipmap.ic_workspace_func_7);
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(5);
itemFunc.setName("土地案件");
itemFunc.setIcon(R.mipmap.ic_workspace_func_5);
funcs.add(itemFunc);
item.setFuncs(funcs);
workSpaceEntities.add(item);
@ -180,6 +174,12 @@ public class WorkSpaceFragment extends BaseFragment<FragmentWorkspaceBinding> {
itemFunc.setIcon(R.mipmap.ic_workspace_func_14);
funcs.add(itemFunc);
itemFunc = new WorkSpaceEntity.FuncsEntity();
itemFunc.setId(3);
itemFunc.setName("种植计划");
itemFunc.setIcon(R.mipmap.ic_workspace_func_3);
funcs.add(itemFunc);
item.setFuncs(funcs);
workSpaceEntities.add(item);
@ -251,42 +251,42 @@ public class WorkSpaceFragment extends BaseFragment<FragmentWorkspaceBinding> {
item.setFuncs(funcs);
workSpaceEntities.add(item);
// item = new WorkSpaceEntity();
// item.setName("农业产品监测");
// funcs = new ArrayList<>();
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(24);
// itemFunc.setName("田间监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_24);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(25);
// itemFunc.setName("水质监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_25);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(26);
// itemFunc.setName("病虫害监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_26);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(27);
// itemFunc.setName("环境监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_27);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(28);
// itemFunc.setName("产量预测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_28);
// funcs.add(itemFunc);
//
// item.setFuncs(funcs);
// workSpaceEntities.add(item);
// item = new WorkSpaceEntity();
// item.setName("农业产品监测");
// funcs = new ArrayList<>();
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(24);
// itemFunc.setName("田间监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_24);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(25);
// itemFunc.setName("水质监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_25);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(26);
// itemFunc.setName("病虫害监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_26);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(27);
// itemFunc.setName("环境监测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_27);
// funcs.add(itemFunc);
//
// itemFunc = new WorkSpaceEntity.FuncsEntity();
// itemFunc.setId(28);
// itemFunc.setName("产量预测");
// itemFunc.setIcon(R.mipmap.ic_workspace_func_28);
// funcs.add(itemFunc);
//
// item.setFuncs(funcs);
// workSpaceEntities.add(item);
return workSpaceEntities;
}

View File

@ -108,7 +108,7 @@
android:layout_gravity="end|center_vertical"
android:background="@color/transparent"
android:gravity="end|center_vertical"
android:hint="请输入"
android:hint="请输入"
android:textColor="@color/color_txt_black"
android:textColorHint="@color/color_txt_label"
android:textSize="16sp" />
@ -123,6 +123,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
@ -134,15 +135,16 @@
android:textSize="16sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/membersRecycler"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:layout_weight="1" />
<ImageView
android:id="@+id/btnAdd"
android:id="@+id/btnAddMember"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="end|center_vertical"

View File

@ -36,7 +36,6 @@
android:id="@+id/inputUserName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="admin"
android:background="@color/transparent"
android:hint="请输入账号"
android:textColor="@color/color_txt_black"
@ -69,7 +68,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:text="admin123"
android:hint="请输入密码"
android:inputType="textPassword"
android:textColor="@color/color_txt_black"

View File

@ -87,9 +87,13 @@
<EditText
android:layout_width="match_parent"
android:layout_height="96dp"
android:layout_height="72dp"
android:background="@color/transparent"
android:gravity="top|left" />
android:gravity="top|left"
android:hint="给AI智能助手发消息..."
android:textColor="@color/color_txt_black"
android:textColorHint="@color/color_txt_label"
android:textSize="16sp" />
<ImageView
android:layout_width="24dp"

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dp"
android:background="@drawable/bg_container_light_gray_raduis_5"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="6dp">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="123"
android:textColor="@color/color_txt_black"
android:textSize="14sp" />
<ImageView
android:id="@+id/btnDelete"
android:layout_width="14dp"
android:layout_height="14dp"
android:layout_marginLeft="4dp"
android:padding="1dp"
android:src="@mipmap/ic_cancel_gray" />
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 710 B