From 60b96e9221632debb08aaf5fb7abd8361a90c0fb Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Wed, 31 Jan 2024 19:59:33 +0800
Subject: [PATCH] 社区新增面,网格员网格处理调整
---
src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java | 101 +++++++++++++++-
src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java | 21 ++-
src/main/java/org/springblade/modules/community/service/ICommunityService.java | 18 +++
src/main/java/org/springblade/modules/community/entity/CommunityEntity.java | 8 +
src/main/java/org/springblade/modules/community/mapper/CommunityMapper.xml | 31 +++++
src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java | 17 +-
src/main/java/org/springblade/modules/community/controller/CommunityController.java | 33 +++++
src/main/java/org/springblade/modules/community/excel/CommunityImporter.java | 23 +++
src/main/java/org/springblade/modules/community/mapper/CommunityMapper.java | 5
src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml | 3
src/main/java/org/springblade/modules/community/excel/CommunityExcel.java | 34 +++++
src/main/java/org/springblade/modules/community/service/impl/CommunityServiceImpl.java | 39 ++++++
src/main/resources/application.yml | 4
13 files changed, 306 insertions(+), 31 deletions(-)
diff --git a/src/main/java/org/springblade/modules/community/controller/CommunityController.java b/src/main/java/org/springblade/modules/community/controller/CommunityController.java
index 9f248d2..b81ec3d 100644
--- a/src/main/java/org/springblade/modules/community/controller/CommunityController.java
+++ b/src/main/java/org/springblade/modules/community/controller/CommunityController.java
@@ -23,11 +23,16 @@
import lombok.AllArgsConstructor;
import javax.validation.Valid;
+import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
+import org.springblade.modules.community.excel.CommunityExcel;
+import org.springblade.modules.community.excel.CommunityImporter;
+import org.springblade.modules.grid.excel.GridExcel;
+import org.springblade.modules.grid.excel.GridImporter;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.community.entity.CommunityEntity;
@@ -35,6 +40,7 @@
import org.springblade.modules.community.wrapper.CommunityWrapper;
import org.springblade.modules.community.service.ICommunityService;
import org.springblade.core.boot.ctrl.BladeController;
+import org.springframework.web.multipart.MultipartFile;
/**
* 社区表 控制器
@@ -60,6 +66,15 @@
CommunityEntity detail = communityService.getOne(Condition.getQueryWrapper(community));
return R.data(CommunityWrapper.build().entityVO(detail));
}
+
+ /**
+ * 社区表 自定义详情
+ */
+ @GetMapping("/getDetail")
+ public R<CommunityVO> getDetail(CommunityEntity community) {
+ return R.data(communityService.getDetail(community));
+ }
+
/**
* 社区表 分页
*/
@@ -113,6 +128,14 @@
}
/**
+ * 社区表 自定义新增或修改
+ */
+ @PostMapping("/saveOrUpdate")
+ public R saveOrUpdate(@Valid @RequestBody CommunityEntity community) {
+ return R.status(communityService.saveOrUpdateCommunityEntity(community));
+ }
+
+ /**
* 社区表 删除
*/
@PostMapping("/remove")
@@ -122,5 +145,15 @@
return R.status(communityService.removeByIds(Func.toLongList(ids)));
}
+ /**
+ * 导入社区数据
+ */
+ @PostMapping("/import-community")
+ public R importCommunity(MultipartFile file, Integer isCovered) {
+ CommunityImporter communityImporter = new CommunityImporter(communityService, isCovered == 1);
+ ExcelUtil.save(file, communityImporter, CommunityExcel.class);
+ return R.success("操作成功");
+ }
+
}
diff --git a/src/main/java/org/springblade/modules/community/entity/CommunityEntity.java b/src/main/java/org/springblade/modules/community/entity/CommunityEntity.java
index 0265d8b..6b4a2cb 100644
--- a/src/main/java/org/springblade/modules/community/entity/CommunityEntity.java
+++ b/src/main/java/org/springblade/modules/community/entity/CommunityEntity.java
@@ -28,6 +28,7 @@
import java.util.Date;
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
+import org.springblade.modules.grid.handle.GeometryTypeHandler;
import org.springframework.format.annotation.DateTimeFormat;
/**
@@ -91,6 +92,13 @@
@ApiModelProperty(value = "中心坐标-纬度")
private String lat;
/**
+ * 社区面数据
+ * @TableField(typeHandler = GeometryTypeHandler.class) 操作面的时候用,平时注释掉
+ */
+ @ApiModelProperty(value = "社区面数据")
+// @TableField(typeHandler = GeometryTypeHandler.class)
+ private String geom;
+ /**
* 简介
*/
@ApiModelProperty(value = "简介")
diff --git a/src/main/java/org/springblade/modules/community/excel/CommunityExcel.java b/src/main/java/org/springblade/modules/community/excel/CommunityExcel.java
new file mode 100644
index 0000000..09ec2bf
--- /dev/null
+++ b/src/main/java/org/springblade/modules/community/excel/CommunityExcel.java
@@ -0,0 +1,34 @@
+package org.springblade.modules.community.excel;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+import java.io.Serializable;
+
+/**
+ * GridExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class CommunityExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ColumnWidth(15)
+ @ExcelProperty("社区名称")
+ private String communityName;
+
+ @ColumnWidth(15)
+ @ExcelProperty("社区编号")
+ private String communityCode;
+
+ @ColumnWidth(100)
+ @ExcelProperty("区域")
+ private String geom;
+
+}
diff --git a/src/main/java/org/springblade/modules/community/excel/CommunityImporter.java b/src/main/java/org/springblade/modules/community/excel/CommunityImporter.java
new file mode 100644
index 0000000..11252a3
--- /dev/null
+++ b/src/main/java/org/springblade/modules/community/excel/CommunityImporter.java
@@ -0,0 +1,23 @@
+package org.springblade.modules.community.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.community.service.ICommunityService;
+import java.util.List;
+
+/**
+ * 社区数据导入类
+ *
+ * @author zhongrj
+ */
+@RequiredArgsConstructor
+public class CommunityImporter implements ExcelImporter<CommunityExcel> {
+
+ private final ICommunityService communityService;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<CommunityExcel> data) {
+ communityService.importCommunity(data, isCovered);
+ }
+}
diff --git a/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.java b/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.java
index bef8d61..317e954 100644
--- a/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.java
+++ b/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.java
@@ -49,4 +49,9 @@
* @return
*/
List<String> getCommunityCodeListByUserId(@Param("userId") Long userId);
+
+ /**
+ * 社区表 自定义详情
+ */
+ CommunityVO getDetail(@Param("community") CommunityEntity community);
}
diff --git a/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.xml b/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.xml
index f83bb14..4c67739 100644
--- a/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.xml
+++ b/src/main/java/org/springblade/modules/community/mapper/CommunityMapper.xml
@@ -24,7 +24,16 @@
<!--自定义分页列表查询-->
<select id="selectCommunityPage" resultType="org.springblade.modules.community.vo.CommunityVO">
select
- jc.*,
+ jc.id,
+ jc.street_code,
+ jc.code,
+ jc.name,
+ jc.pic_url,
+ jc.address,
+ jc.res_police_user_id,
+ jc.lng,
+ jc.lat,
+ jc.remark,
br.town_name townName
from jczz_community jc
left join blade_region br on br.code = jc.code
@@ -62,5 +71,25 @@
where is_deleted = 0 and res_police_user_id like concat('%',#{userId},'%')
</select>
+ <!--自定义分页列表查询-->
+ <select id="getDetail" resultType="org.springblade.modules.community.vo.CommunityVO">
+ select
+ jc.id,
+ jc.street_code,
+ jc.code,
+ jc.name,
+ jc.pic_url,
+ jc.address,
+ jc.res_police_user_id,
+ jc.lng,
+ jc.lat,
+ jc.remark,
+ br.town_name townName
+ from jczz_community jc
+ left join blade_region br on br.code = jc.code
+ where jc.is_deleted = 0
+ and jc.id = #{community.id}
+ </select>
+
</mapper>
diff --git a/src/main/java/org/springblade/modules/community/service/ICommunityService.java b/src/main/java/org/springblade/modules/community/service/ICommunityService.java
index fed076a..3f0c549 100644
--- a/src/main/java/org/springblade/modules/community/service/ICommunityService.java
+++ b/src/main/java/org/springblade/modules/community/service/ICommunityService.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.community.entity.CommunityEntity;
+import org.springblade.modules.community.excel.CommunityExcel;
import org.springblade.modules.community.vo.CommunityVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -47,4 +48,21 @@
* @return
*/
List<String> getCommunityCodeListByUserId(Long userId);
+
+ /**
+ * 导入社区数据
+ * @param data
+ * @param isCovered
+ */
+ void importCommunity(List<CommunityExcel> data, Boolean isCovered);
+
+ /**
+ * 社区表 自定义新增或修改
+ */
+ boolean saveOrUpdateCommunityEntity(CommunityEntity community);
+
+ /**
+ * 社区表 自定义详情
+ */
+ CommunityVO getDetail(CommunityEntity community);
}
diff --git a/src/main/java/org/springblade/modules/community/service/impl/CommunityServiceImpl.java b/src/main/java/org/springblade/modules/community/service/impl/CommunityServiceImpl.java
index 71bb2db..02e1cca 100644
--- a/src/main/java/org/springblade/modules/community/service/impl/CommunityServiceImpl.java
+++ b/src/main/java/org/springblade/modules/community/service/impl/CommunityServiceImpl.java
@@ -16,10 +16,12 @@
*/
package org.springblade.modules.community.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.common.cache.SysCache;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.modules.community.entity.CommunityEntity;
+import org.springblade.modules.community.excel.CommunityExcel;
import org.springblade.modules.community.vo.CommunityVO;
import org.springblade.modules.community.mapper.CommunityMapper;
import org.springblade.modules.community.service.ICommunityService;
@@ -56,4 +58,41 @@
public List<String> getCommunityCodeListByUserId(Long userId) {
return baseMapper.getCommunityCodeListByUserId(userId);
}
+
+ /**
+ * 导入社区数据
+ * @param data
+ * @param isCovered
+ */
+ @Override
+ public void importCommunity(List<CommunityExcel> data, Boolean isCovered) {
+ for (CommunityExcel communityExcel : data) {
+ // 查询是否存在,存在即更新,否则新增
+ QueryWrapper<CommunityEntity> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted",0).eq("code",communityExcel.getCommunityCode());
+ CommunityEntity one = getOne(wrapper);
+ if (null!=one){
+ // 更新
+ one.setGeom(communityExcel.getGeom());
+ // 更新
+ updateById(one);
+ }
+ }
+ }
+
+ /**
+ * 社区表 自定义新增或修改
+ */
+ @Override
+ public boolean saveOrUpdateCommunityEntity(CommunityEntity community) {
+ return false;
+ }
+
+ /**
+ * 社区表 自定义详情
+ */
+ @Override
+ public CommunityVO getDetail(CommunityEntity community) {
+ return baseMapper.getDetail(community);
+ }
}
diff --git a/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java b/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java
index de5891c..ab4c16f 100644
--- a/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java
+++ b/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java
@@ -23,24 +23,27 @@
private static final long serialVersionUID = 1L;
@ColumnWidth(15)
- @ExcelProperty("社区网格名称")
+ @ExcelProperty("社区名称")
private String communityName;
+ @ColumnWidth(15)
+ @ExcelProperty("社区编号")
+ private String communityCode;
+
+ @ColumnWidth(15)
+ @ExcelProperty("网格名称")
+ private String gridName;
@ColumnWidth(15)
@ExcelProperty("网格编号")
private String gridCode;
- /**
- * 网格员名称
- */
- @ApiModelProperty(value = "网格员姓名")
+ @ColumnWidth(15)
+ @ExcelProperty("网格员姓名")
private String gridmanName;
- /**
- * 网格员电话
- */
- @ApiModelProperty(value = "网格员电话")
+ @ColumnWidth(15)
+ @ExcelProperty("网格员电话")
private String mobile;
}
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
index 001bc19..41466b7 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -41,6 +41,7 @@
<if test="grid.townName != null and grid.townName !='' ">
and br.town_name like concat('%',#{grid.townName},'%')
</if>
+ order by community_code asc,grid_code asc
</select>
<!--根据地址编号查询网格数据-->
@@ -103,7 +104,7 @@
<!--查询全部-->
<select id="selectGridAll" resultType="org.springblade.modules.grid.entity.GridEntity">
- select id,community_code,grid_name,principal,principal_phone,remark,sort from jczz_grid
+ select id,grid_code,community_code,grid_name,principal,principal_phone,remark,sort from jczz_grid
where is_deleted = 0
</select>
diff --git a/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java b/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
index 105357a..ec91d5f 100644
--- a/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
+++ b/src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java
@@ -209,7 +209,8 @@
QueryWrapper<Region> regionWrapper = new QueryWrapper<>();
regionWrapper.eq("code",grid.getCommunityCode());
Region region = regionService.getOne(regionWrapper);
- // 查询父机构
+ // 查询父机构(社区机构)
+ System.out.println("社区名称 = " + region.getName());
QueryWrapper<Dept> wrapper = new QueryWrapper<>();
wrapper.eq("dept_name",region.getName())
.eq("is_deleted",0);
@@ -218,22 +219,24 @@
QueryWrapper<Dept> wrapperChild = new QueryWrapper<>();
wrapperChild.eq("dept_name",grid.getGridName())
.eq("is_deleted",0)
- .eq("id",dept.getId());
- Dept deptChild = deptService.getOne(wrapperChild);
- if (null==deptChild){
+ .eq("parent_id",dept.getId());
+ List<Dept> deptChild = deptService.list(wrapperChild);
+ if (deptChild.size()==0){
Dept deptInfo = new Dept();
deptInfo.setParentId(dept.getId());
deptInfo.setFullName(grid.getGridName());
deptInfo.setDeptName(grid.getGridName());
deptInfo.setDeptCategory(1);
deptInfo.setTenantId("000000");
+ deptInfo.setRegionCode(grid.getGridCode());
+ deptInfo.setAncestors(dept.getAncestors() + "," +dept.getId());
// 新增
deptService.save(deptInfo);
// 查询网格是否已存在(社区编号-网格名称),已存在更新,不存在插入新的
QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("grid_name",grid.getGridName())
- .eq("is_deleted",0)
- .eq("community_code",grid.getCommunityCode());
+ queryWrapper.eq("grid_code",grid.getGridCode())
+ .eq("is_deleted",0);
+ System.out.println("网格编号 = " + grid.getGridCode());
GridEntity one = getOne(queryWrapper);
if (null!=one){
grid.setId(one.getId());
diff --git a/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java b/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
index baaebc7..c6ed108 100644
--- a/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
+++ b/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
@@ -33,7 +33,11 @@
import org.springblade.modules.grid.service.IGridService;
import org.springblade.modules.grid.service.IGridmanService;
import org.springblade.modules.grid.vo.GridmanVO;
+import org.springblade.modules.system.entity.Dept;
+import org.springblade.modules.system.entity.Region;
import org.springblade.modules.system.entity.User;
+import org.springblade.modules.system.service.IDeptService;
+import org.springblade.modules.system.service.IRegionService;
import org.springblade.modules.system.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -167,22 +171,97 @@
public void importGridman(List<GridmanExcel> data, Boolean isCovered) {
// 遍历
for (GridmanExcel gridmanExcel : data) {
- GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
- // 通过社区名称和网格名称获取网格id
- QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.eq("is_deleted", 0)
- .eq("grid_code", gridmanExcel.getGridCode());
- GridEntity gridEntity = gridService.getOne(queryWrapper);
- // 设置网格id
- gridmanEntity.setGridId(gridEntity.getId());
- // 插入网格员
- if (!Strings.isBlank(gridmanExcel.getMobile())) {
- saveOrUpdateGridman(gridmanEntity);
+ // 先查询是否有对应的用户
+ List<User> userList = userService.getUserListByPhoneOrAccount(gridmanExcel.getMobile());
+ if (userList.size()>0){
+ User user = userList.get(0);
+ // 判断角色是否包好网格员的角色,如果没有则加入网格员的角色,有则不更改
+ if (!user.getRoleId().contains("1717429261910528001")) {
+ // 更新角色
+ user.setRoleId(user.getRoleId() + "," + "1717429261910528001");
+ // 更新机构
+ setDeptId(gridmanExcel,user);
+ // 更新用户信息
+ userService.updateById(user);
+ // 更新网格员绑定
+ updateGridmanBind(gridmanExcel,user);
+ }
+ }else {
+ // 创建用户
+ User user = new User();
+ user.setTenantId("000000");
+ user.setUserType(1);
+ user.setRoleId("1717429261910528001");
+ user.setName(gridmanExcel.getGridmanName());
+ user.setRealName(gridmanExcel.getGridmanName());
+ user.setPhone(gridmanExcel.getMobile());
+ user.setAccount(gridmanExcel.getMobile());
+ // 更新机构
+ setDeptId(gridmanExcel,user);
+ // 设置默认密码
+ user.setPassword("123456");
+ // 保存
+ userService.submit(user);
+ // 更新网格员绑定
+ updateGridmanBind(gridmanExcel,user);
}
+
}
}
/**
+ * 更新网格员绑定
+ * @param gridmanExcel
+ * @param user
+ */
+ public void updateGridmanBind(GridmanExcel gridmanExcel, User user) {
+ // 保存更新网格员信息
+ GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
+ // 通过社区名称和网格名称获取网格id
+ QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_deleted", 0)
+ .eq("grid_code", gridmanExcel.getGridCode());
+ GridEntity gridEntity = gridService.getOne(queryWrapper);
+ // 设置网格id
+ gridmanEntity.setGridId(gridEntity.getId());
+ gridmanEntity.setUserId(user.getId());
+ // 插入网格员
+ // 判断是否已存,已存在则更新,否则插入
+ QueryWrapper<GridmanEntity> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted",0).eq("user_id",user.getId()).eq("grid_code",gridmanExcel.getGridCode());
+ GridmanEntity entity = getOne(wrapper);
+ if (null!=entity){
+ gridmanEntity.setId(entity.getId());
+ updateById(gridmanEntity);
+ }else {
+ save(gridmanEntity);
+ }
+ }
+
+ /**
+ * 更新机构
+ * @param gridmanExcel
+ * @param user
+ */
+ public void setDeptId(GridmanExcel gridmanExcel, User user) {
+ // 通过社区编号查询对应的机构id
+ Region region = SpringUtil.getBean(IRegionService.class).getById(gridmanExcel.getCommunityCode());
+ // 查询社区对应的机构
+ QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted",0).eq("dept_name",region.getName());
+ Dept dept = SpringUtil.getBean(IDeptService.class).getOne(wrapper);
+ // 查询网格对应的机构
+ QueryWrapper<Dept> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_deleted",0).
+ eq("parent_id",dept.getId()).
+ eq("dept_name",gridmanExcel.getGridName());
+ System.out.println("网格名称 = " + gridmanExcel.getGridName());
+ Dept deptGrid = SpringUtil.getBean(IDeptService.class).getOne(queryWrapper);
+ // 设置机构
+ user.setDeptId(deptGrid.getId().toString());
+ }
+
+ /**
* 网格员查询
*
* @param gridman
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 62059c1..cced279 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -238,14 +238,14 @@
- /blade-userPublicEnroll/userPublicEnroll/page
- /blade-topics/topics/lists
- /blade-household/household/getHouseholdOtherInfo
+ - /blade-resource/oss/endpoint/put-file
+ - /blade-hiddenDangerRecord/**
# - /blade-doorplateAddress/doorplateAddress/**
# - /blade-house/house/**
# - /blade-household/household/**
# - /blade-label/label/**
# - /blade-houseRental/houseRental/**
# - /blade-resource/oss/**
- - /blade-resource/oss/endpoint/put-file
- - /blade-hiddenDangerRecord/**
# - /blade-place/**
# - /blade-taskReportForRepairs/**
# - /blade-placeExt/**
--
Gitblit v1.9.3