From 038f3e14174a00a111d489d5cf1b724275fe33da Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Tue, 28 Nov 2023 18:10:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java | 167 +++++++
src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java | 52 ++
src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.java | 44 ++
src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java | 14
src/main/java/org/springblade/modules/grid/handle/GeometryTypeHandler.java | 134 ++++++
src/main/java/org/springblade/modules/grid/mapper/GridMapper.java | 23 +
pom.xml | 5
src/main/java/org/springblade/modules/grid/controller/GridController.java | 36 +
src/main/java/org/springblade/modules/grid/dto/GridmanDTO.java | 34 +
src/main/java/org/springblade/modules/grid/entity/GridmanEntity.java | 126 ++++++
src/main/java/org/springblade/modules/grid/wrapper/GridmanWrapper.java | 50 ++
src/main/java/org/springblade/modules/grid/vo/GridmanVO.java | 42 ++
src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml | 2
src/main/java/org/springblade/modules/grid/service/impl/GridServiceImpl.java | 112 +++++
src/main/java/org/springblade/modules/grid/service/IGridmanService.java | 58 ++
src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.xml | 39 +
src/main/java/org/springblade/modules/grid/controller/GridmanController.java | 150 +++++++
src/main/java/org/springblade/modules/grid/excel/GridmanImporter.java | 25 +
src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml | 55 ++
src/main/java/org/springblade/modules/grid/service/IGridService.java | 25 +
src/main/java/org/springblade/modules/grid/entity/GridEntity.java | 32 +
src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java | 7
22 files changed, 1,214 insertions(+), 18 deletions(-)
diff --git a/pom.xml b/pom.xml
index e74cf1b..ee72a93 100644
--- a/pom.xml
+++ b/pom.xml
@@ -186,6 +186,11 @@
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>com.vividsolutions</groupId>
+ <artifactId>jts</artifactId>
+ <version>1.13</version>
+ </dependency>
</dependencies>
<build>
diff --git a/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml b/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
index dc5e2cc..985fc29 100644
--- a/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
+++ b/src/main/java/org/springblade/modules/district/mapper/DistrictMapper.xml
@@ -31,7 +31,7 @@
</if>
</select>
- <!--自定义分页-->
+ <!--小区树查询-->
<select id="getDistrictTree" resultType="org.springblade.common.node.TreeStringNode">
SELECT
code as id,
diff --git a/src/main/java/org/springblade/modules/grid/controller/GridController.java b/src/main/java/org/springblade/modules/grid/controller/GridController.java
index 5a79eed..894fbf5 100644
--- a/src/main/java/org/springblade/modules/grid/controller/GridController.java
+++ b/src/main/java/org/springblade/modules/grid/controller/GridController.java
@@ -64,6 +64,14 @@
GridEntity detail = gridService.getOne(Condition.getQueryWrapper(grid));
return R.data(GridWrapper.build().entityVO(detail));
}
+
+ /**
+ * 网格表 自定义详情
+ */
+ @GetMapping("/getGridDetail")
+ public R getGridDetail(GridVO grid) {
+ return R.data(gridService.getGridDetail(grid));
+ }
/**
* 网格表 分页
*/
@@ -97,6 +105,14 @@
}
/**
+ * 网格表 自定义新增或修改
+ */
+ @PostMapping("/saveOrUpdate")
+ public R saveOrUpdate(@Valid @RequestBody GridEntity grid) {
+ return R.status(gridService.saveOrUpdateGrid(grid));
+ }
+
+ /**
* 网格表 修改
*/
@PostMapping("/update")
@@ -123,7 +139,7 @@
@ApiOperationSupport(order = 7)
@ApiOperation(value = "逻辑删除", notes = "传入ids")
public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
- return R.status(gridService.removeByIds(Func.toLongList(ids)));
+ return R.status(gridService.removeByIds(Func.toIntList(ids)));
}
/**
@@ -144,5 +160,23 @@
return R.data(gridService.spatialAnalysis());
}
+ /**
+ * 网格数据同步处理
+ */
+ @GetMapping("/asyncGridDept")
+ public R asyncGridDept() {
+ return R.data(gridService.asyncGridDept());
+ }
+
+ /**
+ * 网格树
+ * @param grid
+ * @return
+ */
+ @GetMapping("/getGridTree")
+ public R getGridTree(GridVO grid) {
+ return R.data(gridService.getGridTree(grid));
+ }
+
}
diff --git a/src/main/java/org/springblade/modules/grid/controller/GridmanController.java b/src/main/java/org/springblade/modules/grid/controller/GridmanController.java
new file mode 100644
index 0000000..7ff7b16
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/controller/GridmanController.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import lombok.AllArgsConstructor;
+import javax.validation.Valid;
+
+import org.springblade.core.excel.util.ExcelUtil;
+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.grid.excel.GridExcel;
+import org.springblade.modules.grid.excel.GridImporter;
+import org.springblade.modules.grid.excel.GridmanExcel;
+import org.springblade.modules.grid.excel.GridmanImporter;
+import org.springframework.web.bind.annotation.*;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.modules.grid.vo.GridmanVO;
+import org.springblade.modules.grid.wrapper.GridmanWrapper;
+import org.springblade.modules.grid.service.IGridmanService;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 网格员表 控制器
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("blade-gridman/gridman")
+@Api(value = "网格员表", tags = "网格员表接口")
+public class GridmanController {
+
+ private final IGridmanService gridmanService;
+
+ /**
+ * 网格员表 详情
+ */
+ @GetMapping("/detail")
+ @ApiOperationSupport(order = 1)
+ @ApiOperation(value = "详情", notes = "传入gridman")
+ public R<GridmanVO> detail(GridmanEntity gridman) {
+ GridmanEntity detail = gridmanService.getOne(Condition.getQueryWrapper(gridman));
+ return R.data(GridmanWrapper.build().entityVO(detail));
+ }
+ /**
+ * 网格员表 分页
+ */
+ @GetMapping("/list")
+ @ApiOperationSupport(order = 2)
+ @ApiOperation(value = "分页", notes = "传入gridman")
+ public R<IPage<GridmanVO>> list(GridmanEntity gridman, Query query) {
+ IPage<GridmanEntity> pages = gridmanService.page(Condition.getPage(query), Condition.getQueryWrapper(gridman));
+ return R.data(GridmanWrapper.build().pageVO(pages));
+ }
+
+ /**
+ * 网格员表 自定义分页
+ */
+ @GetMapping("/page")
+ @ApiOperationSupport(order = 3)
+ @ApiOperation(value = "分页", notes = "传入gridman")
+ public R<IPage<GridmanVO>> page(GridmanVO gridman, Query query) {
+ IPage<GridmanVO> pages = gridmanService.selectGridmanPage(Condition.getPage(query), gridman);
+ return R.data(pages);
+ }
+
+ /**
+ * 网格员表 新增
+ */
+ @PostMapping("/save")
+ @ApiOperationSupport(order = 4)
+ @ApiOperation(value = "新增", notes = "传入gridman")
+ public R save(@Valid @RequestBody GridmanEntity gridman) {
+ return R.status(gridmanService.save(gridman));
+ }
+
+ /**
+ * 网格员表 修改
+ */
+ @PostMapping("/update")
+ @ApiOperationSupport(order = 5)
+ @ApiOperation(value = "修改", notes = "传入gridman")
+ public R update(@Valid @RequestBody GridmanEntity gridman) {
+ return R.status(gridmanService.updateById(gridman));
+ }
+
+ /**
+ * 网格员表 新增或修改
+ */
+ @PostMapping("/submit")
+ @ApiOperationSupport(order = 6)
+ @ApiOperation(value = "新增或修改", notes = "传入gridman")
+ public R submit(@Valid @RequestBody GridmanEntity gridman) {
+ return R.status(gridmanService.saveOrUpdate(gridman));
+ }
+
+ /**
+ * 网格员表 自定义新增或修改
+ * @param gridman
+ * @return
+ */
+ @PostMapping("/saveOrUpdate")
+ public R saveOrUpdate(@Valid @RequestBody GridmanEntity gridman) {
+ return R.status(gridmanService.saveOrUpdateGridman(gridman));
+ }
+
+ /**
+ * 网格员表 删除
+ */
+ @PostMapping("/remove")
+ @ApiOperationSupport(order = 7)
+ @ApiOperation(value = "逻辑删除", notes = "传入ids")
+ public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
+ return R.status(gridmanService.removeByIds(Func.toIntList(ids)));
+ }
+
+ /**
+ * 导入网格员数据
+ */
+ @PostMapping("/import-gridman")
+ public R importGrid(MultipartFile file, Integer isCovered) {
+ GridmanImporter gridmanImporter = new GridmanImporter(gridmanService, isCovered == 1);
+ ExcelUtil.save(file, gridmanImporter, GridmanExcel.class);
+ return R.success("操作成功");
+ }
+
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/dto/GridmanDTO.java b/src/main/java/org/springblade/modules/grid/dto/GridmanDTO.java
new file mode 100644
index 0000000..c37bc69
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/dto/GridmanDTO.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.dto;
+
+import org.springblade.modules.grid.entity.GridmanEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 网格员表 数据传输对象实体类
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GridmanDTO extends GridmanEntity {
+ private static final long serialVersionUID = 1L;
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/entity/GridEntity.java b/src/main/java/org/springblade/modules/grid/entity/GridEntity.java
index 9f6dc3b..5181bb4 100644
--- a/src/main/java/org/springblade/modules/grid/entity/GridEntity.java
+++ b/src/main/java/org/springblade/modules/grid/entity/GridEntity.java
@@ -16,10 +16,8 @@
*/
package org.springblade.modules.grid.entity;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
+import com.alibaba.fastjson.support.geo.Geometry;
+import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -32,6 +30,7 @@
import lombok.EqualsAndHashCode;
import org.springblade.core.tenant.mp.TenantEntity;
+import org.springblade.modules.grid.handle.GeometryTypeHandler;
import org.springframework.format.annotation.DateTimeFormat;
/**
@@ -53,6 +52,16 @@
@ApiModelProperty("主键id")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
+ /**
+ * 机构id
+ */
+ @ApiModelProperty(value = "机构id")
+ private Long deptId;
+ /**
+ * 社区编号
+ */
+ @ApiModelProperty(value = "社区编号")
+ private String communityCode;
/**
* 社区名称
*/
@@ -82,13 +91,21 @@
* 网格面数据
*/
@ApiModelProperty(value = "网格面数据")
+// @TableField(typeHandler = GeometryTypeHandler.class)
private String geom;
+
+ /**
+ * 排序
+ */
+ @ApiModelProperty(value = "排序")
+ private Integer sort;
/**
* 创建人
*/
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty("创建人")
+ @TableField(fill = FieldFill.INSERT)
private Long createUser;
/**
@@ -97,6 +114,7 @@
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
+ @TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
@@ -104,6 +122,7 @@
*/
@JsonSerialize(using = ToStringSerializer.class)
@ApiModelProperty("更新人")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
/**
@@ -112,12 +131,13 @@
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
/**
- * 备注
+ * 备注/简介
*/
- @ApiModelProperty(value = "备注")
+ @ApiModelProperty(value = "备注/简介")
private String remark;
/**
diff --git a/src/main/java/org/springblade/modules/grid/entity/GridmanEntity.java b/src/main/java/org/springblade/modules/grid/entity/GridmanEntity.java
new file mode 100644
index 0000000..02e892e
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/entity/GridmanEntity.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.Data;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import lombok.EqualsAndHashCode;
+import org.springblade.core.tenant.mp.TenantEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 网格员表 实体类
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+@Data
+@TableName("jczz_gridman")
+@ApiModel(value = "Gridman对象", description = "网格员表")
+public class GridmanEntity implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty("主键id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 网格id
+ */
+ @ApiModelProperty(value = "网格id")
+ private Integer gridId;
+ /**
+ * 关联用户表id
+ */
+ @ApiModelProperty(value = "关联用户表id")
+ private Long userId;
+ /**
+ * 网格员名称
+ */
+ @ApiModelProperty(value = "网格员名称")
+ private String gridmanName;
+ /**
+ * 手机号
+ */
+ @ApiModelProperty(value = "手机号")
+ private String mobile;
+
+ /**
+ * 形象照
+ */
+ @ApiModelProperty(value = "形象照")
+ private String picUrl;
+
+ /**
+ * 备注
+ */
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+ /**
+ * 创建人
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty("创建人")
+ @TableField(fill = FieldFill.INSERT)
+ private Long createUser;
+
+ /**
+ * 创建时间
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("创建时间")
+ @TableField(fill = FieldFill.INSERT)
+ private Date createTime;
+
+ /**
+ * 更新人
+ */
+ @JsonSerialize(using = ToStringSerializer.class)
+ @ApiModelProperty("更新人")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Long updateUser;
+
+ /**
+ * 更新时间
+ */
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("更新时间")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Date updateTime;
+
+ /**
+ * 是否删除
+ */
+ @TableLogic
+ @ApiModelProperty("是否已删除 0:否 1:是")
+ private Integer isDeleted;
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java b/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java
new file mode 100644
index 0000000..1129db8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/excel/GridmanExcel.java
@@ -0,0 +1,52 @@
+
+package org.springblade.modules.grid.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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * GridExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class GridmanExcel implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ColumnWidth(15)
+ @ExcelProperty("社区名称")
+ private String communityName;
+
+
+ @ColumnWidth(15)
+ @ExcelProperty("网格名称")
+ private String gridName;
+
+ /**
+ * 网格员名称
+ */
+ @ApiModelProperty(value = "网格员姓名")
+ private String gridmanName;
+ /**
+ * 手机号
+ */
+ @ApiModelProperty(value = "联系电话")
+ private String mobile;
+
+ /**
+ * 备注
+ */
+ @ColumnWidth(50)
+ @ExcelProperty("备注")
+ private String remark;
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/excel/GridmanImporter.java b/src/main/java/org/springblade/modules/grid/excel/GridmanImporter.java
new file mode 100644
index 0000000..76702a0
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/excel/GridmanImporter.java
@@ -0,0 +1,25 @@
+package org.springblade.modules.grid.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.grid.service.IGridService;
+import org.springblade.modules.grid.service.IGridmanService;
+
+import java.util.List;
+
+/**
+ * 网格员数据导入类
+ *
+ * @author zhongrj
+ */
+@RequiredArgsConstructor
+public class GridmanImporter implements ExcelImporter<GridmanExcel> {
+
+ private final IGridmanService gridmanService;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<GridmanExcel> data) {
+ gridmanService.importGridman(data, isCovered);
+ }
+}
diff --git a/src/main/java/org/springblade/modules/grid/handle/GeometryTypeHandler.java b/src/main/java/org/springblade/modules/grid/handle/GeometryTypeHandler.java
new file mode 100644
index 0000000..f221298
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/handle/GeometryTypeHandler.java
@@ -0,0 +1,134 @@
+package org.springblade.modules.grid.handle;
+
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.GeometryFactory;
+import com.vividsolutions.jts.geom.PrecisionModel;
+import com.vividsolutions.jts.io.*;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.type.BaseTypeHandler;
+import org.apache.ibatis.type.JdbcType;
+import org.apache.ibatis.type.MappedJdbcTypes;
+import org.apache.ibatis.type.MappedTypes;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+@MappedTypes({String.class})
+@MappedJdbcTypes({JdbcType.OTHER})
+@Slf4j
+public class GeometryTypeHandler extends BaseTypeHandler<String> {
+
+
+ /**
+ * 设置转换
+ * @param preparedStatement
+ * @param i
+ * @param s
+ * @param jdbcType
+ * @throws SQLException
+ */
+ @Override
+ public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
+ try{
+ //String转Geometry
+ Geometry geo = new WKTReader(new GeometryFactory(new PrecisionModel())).read(s);
+ // Geometry转WKB
+ byte[] geometryBytes = new WKBWriter(2, ByteOrderValues.LITTLE_ENDIAN, false).write(geo);
+ // 设置SRID为mysql默认的 0
+ byte[] wkb = new byte[geometryBytes.length+4];
+ wkb[0] = wkb[1] = wkb[2] = wkb[3] = 0;
+ System.arraycopy(geometryBytes, 0, wkb, 4, geometryBytes.length);
+ preparedStatement.setBytes(i,wkb);
+ }catch (ParseException e){
+ log.error("坐标转换异常:【{}】",e.getMessage(),e);
+ }
+ }
+
+ @Override
+ public String getNullableResult(ResultSet resultSet, String s){
+ try(
+ InputStream inputStream = resultSet.getBinaryStream(s)){
+ Geometry geo = getGeometryFromInputStream(inputStream);
+ if(geo != null){
+ return geo.toString();
+ }
+ }catch(Exception e){
+ log.error("坐标转换异常:【{}】",e.getMessage(),e);
+ }
+ return null;
+ }
+
+ @Override
+ public String getNullableResult(ResultSet resultSet, int i){
+ try(InputStream inputStream = resultSet.getBinaryStream(i)){
+ Geometry geo = getGeometryFromInputStream(inputStream);
+ if(geo != null){
+ return geo.toString();
+ }
+ }catch(Exception e){
+ log.error("坐标转换异常:【{}】",e.getMessage(),e);
+ }
+ return null;
+ }
+
+ @Override
+ public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
+ System.out.println("i = " + i);
+ return "";
+ }
+
+ /**
+ * 流 转 geometry
+ * */
+ private Geometry getGeometryFromInputStream(InputStream inputStream) throws Exception {
+
+ Geometry dbGeometry = null;
+
+ if (inputStream != null) {
+ // 二进制流转成字节数组
+ byte[] buffer = new byte[255];
+
+ int bytesRead;
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ baos.write(buffer, 0, bytesRead);
+ }
+ // 得到字节数组
+ byte[] geometryAsBytes = baos.toByteArray();
+ // 字节数组小于5 异常
+ if (geometryAsBytes.length < 5) {
+ throw new RuntimeException("坐标异常");
+ }
+
+ //字节数组前4个字节表示srid 去掉
+ byte[] sridBytes = new byte[4];
+ System.arraycopy(geometryAsBytes, 0, sridBytes, 0, 4);
+ boolean bigEndian = (geometryAsBytes[4] == 0x00);
+ // 解析srid
+ int srid = 0;
+ if (bigEndian) {
+ for (byte sridByte : sridBytes) {
+ srid = (srid << 8) + (sridByte & 0xff);
+ }
+ } else {
+ for (int i = 0; i < sridBytes.length; i++) {
+ srid += (sridBytes[i] & 0xff) << (8 * i);
+ }
+ }
+
+ WKBReader wkbReader = new WKBReader();
+ // WKBReader 把字节数组转成geometry对象。
+ byte[] wkb = new byte[geometryAsBytes.length - 4];
+ System.arraycopy(geometryAsBytes, 4, wkb, 0, wkb.length);
+ dbGeometry = wkbReader.read(wkb);
+ dbGeometry.setSRID(srid);
+ }
+ return dbGeometry;
+ }
+}
+
+
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
index 18446bb..ee4d8c4 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.java
@@ -16,7 +16,9 @@
*/
package org.springblade.modules.grid.mapper;
+import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;
+import org.springblade.common.node.TreeStringNode;
import org.springblade.modules.grid.entity.GridEntity;
import org.springblade.modules.grid.vo.GridVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -24,6 +26,7 @@
import org.springblade.modules.place.vo.PlaceVO;
import java.util.List;
+import java.util.Map;
/**
* 网格表 Mapper 接口
@@ -67,4 +70,24 @@
* @return
*/
GridVO getGridDetailByParam(@Param("place") PlaceVO place);
+
+ /**
+ * 网格表 自定义详情
+ * @param grid
+ * @return
+ */
+ GridVO getGridDetail(@Param("grid") GridVO grid);
+
+ /**
+ * 查询所有
+ * @return
+ */
+ List<GridEntity> selectGridAll();
+
+ /**
+ * 网格树
+ * @return
+ */
+ @MapKey(value = "id")
+ Map<String, TreeStringNode> getGridTree();
}
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 52d3ba7..19056ee 100644
--- a/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridMapper.xml
@@ -4,7 +4,22 @@
<!--自定义分页查询-->
<select id="selectGridPage" resultType="org.springblade.modules.grid.vo.GridVO">
- select * from jczz_grid where is_deleted = 0
+ select
+ id,community_code,grid_name,principal,principal_phone,remark
+ from jczz_grid
+ where is_deleted = 0
+ <if test="grid.communityCode!=null and grid.communityCode!=''">
+ and community_code = #{grid.communityCode}
+ </if>
+ <if test="grid.gridName!=null and grid.gridName!=''">
+ and grid_name like concat('%',#{grid.gridName},'%')
+ </if>
+ <if test="grid.principal!=null and grid.principal!=''">
+ and principal like concat('%',#{grid.principal},'%')
+ </if>
+ <if test="grid.principalPhone!=null and grid.principalPhone!=''">
+ and principal_phone like concat('%',#{grid.principalPhone},'%')
+ </if>
</select>
<!--根据地址编号查询网格数据-->
@@ -21,9 +36,10 @@
<!--根据用户id(网格员)查询对应的房屋地址code-->
<select id="getAddressCodeListByUserId" resultType="java.lang.String">
select jgr.house_code from jczz_grid_range jgr
- left join jczz_grid jg on jg.id = jgr.grid_id
- where jg.is_deleted = 0
- and jg.user_id = #{userId}
+ left join jczz_grid jg on jg.id = jgr.grid_id and jg.is_deleted = 0
+ left join jczz_gridman jgm on jgm.grid_id = jg.id and jgm.is_deleted = 0
+ where 1=1
+ and jgm.user_id = #{userId}
</select>
<!--判断该小区点在哪个派出所-->
@@ -33,7 +49,7 @@
<!--根据地址编号查询网格数据-->
<select id="getGridDetailByParam" resultType="org.springblade.modules.grid.vo.GridVO">
- select jg.id,jg.grid_name,jg.community_name,
+ select jg.id,jg.grid_name,jg.community_name,sort,
bu.real_name as realName,bu.phone as gridPhone
from jczz_grid jg
left join jczz_grid_range jgr on jg.id = jgr.grid_id
@@ -44,4 +60,33 @@
limit 1
</select>
+ <!--自定义详情查询-->
+ <select id="getGridDetail" resultType="org.springblade.modules.grid.vo.GridVO">
+ select id,community_code,grid_name,principal,principal_phone,remark,sort from jczz_grid
+ where is_deleted = 0 and id = #{grid.id}
+ </select>
+
+ <!--查询全部-->
+ <select id="selectGridAll" resultType="org.springblade.modules.grid.entity.GridEntity">
+ select id,community_code,grid_name,principal,principal_phone,remark,sort from jczz_grid
+ where is_deleted = 0
+ </select>
+
+ <!--网格树-->
+ <select id="getGridTree" resultType="org.springblade.common.node.TreeStringNode">
+ SELECT
+ code as id,
+ parent_code as parentId,
+ name
+ FROM blade_region where district_code = '361102'
+ union all
+ (
+ select
+ id,
+ community_code as parentId,
+ grid_name as name
+ from jczz_grid
+ where is_deleted = 0
+ )
+ </select>
</mapper>
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.java b/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.java
new file mode 100644
index 0000000..dc52fe7
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.mapper;
+
+import org.apache.ibatis.annotations.Param;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.modules.grid.vo.GridmanVO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import java.util.List;
+
+/**
+ * 网格员表 Mapper 接口
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+public interface GridmanMapper extends BaseMapper<GridmanEntity> {
+
+ /**
+ * 自定义分页
+ *
+ * @param page
+ * @param gridman
+ * @return
+ */
+ List<GridmanVO> selectGridmanPage(IPage page,@Param("gridman") GridmanVO gridman);
+
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.xml b/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.xml
new file mode 100644
index 0000000..b97c3b2
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/mapper/GridmanMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.modules.grid.mapper.GridmanMapper">
+
+ <!-- 通用查询映射结果 -->
+ <resultMap id="gridmanResultMap" type="org.springblade.modules.grid.entity.GridmanEntity">
+ <result column="id" property="id"/>
+ <result column="grid_id" property="gridId"/>
+ <result column="user_id" property="userId"/>
+ <result column="gridman_name" property="gridmanName"/>
+ <result column="mobile" property="mobile"/>
+ <result column="remark" property="remark"/>
+ <result column="create_time" property="createTime"/>
+ <result column="create_user" property="createUser"/>
+ <result column="update_time" property="updateTime"/>
+ <result column="update_user" property="updateUser"/>
+ <result column="is_deleted" property="isDeleted"/>
+ </resultMap>
+
+ <!--自定义分页查询-->
+ <select id="selectGridmanPage" resultType="org.springblade.modules.grid.vo.GridmanVO">
+ select
+ jgm.*,jg.community_code communityCode
+ from jczz_gridman jgm
+ left join jczz_grid jg on jg.id = jgm.grid_id and jg.is_deleted = 0
+ where jgm.is_deleted = 0
+ <if test="gridman.gridmanName!=null and gridman.gridmanName!=''">
+ and jgm.gridman_name like concat('%',#{gridman.gridmanName},'%')
+ </if>
+ <if test="gridman.mobile!=null and gridman.mobile!=''">
+ and jgm.mobile like concat('%',#{gridman.mobile},'%')
+ </if>
+ <if test="gridman.gridId!=null">
+ and jg.id = #{gridman.gridId}
+ </if>
+ </select>
+
+
+</mapper>
diff --git a/src/main/java/org/springblade/modules/grid/service/IGridService.java b/src/main/java/org/springblade/modules/grid/service/IGridService.java
index fdc1974..5ec5ebe 100644
--- a/src/main/java/org/springblade/modules/grid/service/IGridService.java
+++ b/src/main/java/org/springblade/modules/grid/service/IGridService.java
@@ -19,6 +19,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.grid.entity.GridEntity;
import org.springblade.modules.grid.excel.GridExcel;
+import org.springblade.modules.grid.excel.GridmanExcel;
import org.springblade.modules.grid.vo.GridVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -75,4 +76,28 @@
* @return
*/
GridVO getGridDetailByParam(PlaceVO place);
+
+ /**
+ * 网格表 自定义详情
+ * @param grid
+ * @return
+ */
+ GridVO getGridDetail(GridVO grid);
+
+ /**
+ * 网格表 自定义新增或修改
+ */
+ boolean saveOrUpdateGrid(GridEntity grid);
+
+ /**
+ * 网格数据同步处理
+ */
+ Object asyncGridDept();
+
+ /**
+ * 网格树
+ * @param grid
+ * @return
+ */
+ Object getGridTree(GridVO grid);
}
diff --git a/src/main/java/org/springblade/modules/grid/service/IGridmanService.java b/src/main/java/org/springblade/modules/grid/service/IGridmanService.java
new file mode 100644
index 0000000..a44cc54
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/service/IGridmanService.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.modules.grid.excel.GridmanExcel;
+import org.springblade.modules.grid.vo.GridmanVO;
+import org.springblade.core.mp.base.BaseService;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+
+import java.util.List;
+
+/**
+ * 网格员表 服务类
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+public interface IGridmanService extends IService<GridmanEntity> {
+
+ /**
+ * 自定义分页
+ *
+ * @param page
+ * @param gridman
+ * @return
+ */
+ IPage<GridmanVO> selectGridmanPage(IPage<GridmanVO> page, GridmanVO gridman);
+
+ /**
+ * 网格员表 自定义新增或修改
+ * @param gridman
+ * @return
+ */
+ boolean saveOrUpdateGridman(GridmanEntity gridman);
+
+ /**
+ * 网格员导入
+ * @param data
+ * @param isCovered
+ */
+ void importGridman(List<GridmanExcel> data, Boolean isCovered);
+}
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 acbe123..a8b38e9 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
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.common.utils.NodeTreeUtil;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.modules.doorplateAddress.entity.DoorplateAddressEntity;
@@ -31,7 +32,11 @@
import org.springblade.modules.grid.service.IGridService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.modules.place.vo.PlaceVO;
+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.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -52,10 +57,16 @@
public class GridServiceImpl extends ServiceImpl<GridMapper, GridEntity> implements IGridService {
@Autowired
+ private IRegionService regionService;
+
+ @Autowired
private IDoorplateAddressService doorplateAddressService;
@Autowired
private IGridRangeService gridRangeService;
+
+ @Autowired
+ private IDeptService deptService;
@Override
public IPage<GridVO> selectGridPage(IPage<GridVO> page, GridVO grid) {
@@ -75,7 +86,15 @@
// 取出名称分隔
String[] split = gridExcel.getGridName().split("居民委员会");
GridEntity gridEntity = new GridEntity();
- gridEntity.setCommunityName(split[0] + "居民委员会");
+ String communityName = split[0] + "居民委员会";
+ gridEntity.setCommunityName(communityName);
+ // 通过社区名称查询对应的社区编号
+ QueryWrapper<Region> wrapper = new QueryWrapper<>();
+ wrapper.eq("name",split[0]);
+ Region region = regionService.getOne(wrapper);
+ if (null!=region){
+ gridEntity.setCommunityCode(region.getCode());
+ }
gridEntity.setGridName(split[1]);
gridEntity.setGeom(gridExcel.getGeom());
gridEntity.setCreateUser(AuthUtil.getUserId());
@@ -115,8 +134,8 @@
@Transactional(rollbackFor = Exception.class)
public Object spatialAnalysis() {
// 按社区
-// String name = "万达社区居民委员会";
- String name = "茶山路社区居民委员会";
+ String name = "万达社区居民委员会";
+// String name = "茶山路社区居民委员会";
//查询社区信息
List<DoorplateAddressEntity> doorplateAddressEntities = doorplateAddressService.getAllDoorplateAddress(name);
//遍历
@@ -152,4 +171,91 @@
public GridVO getGridDetailByParam(PlaceVO place) {
return baseMapper.getGridDetailByParam(place);
}
+
+ /**
+ * 网格表 自定义详情
+ * @param grid
+ * @return
+ */
+ @Override
+ public GridVO getGridDetail(GridVO grid) {
+ return baseMapper.getGridDetail(grid);
+ }
+
+ /**
+ * 网格表 自定义新增或修改
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean saveOrUpdateGrid(GridEntity grid) {
+ boolean flag = false;
+ // 先查询当前网格社区对应的机构id
+ QueryWrapper<Region> regionWrapper = new QueryWrapper<>();
+ regionWrapper.eq("code",grid.getCommunityCode());
+ Region region = regionService.getOne(regionWrapper);
+ // 查询父机构
+ QueryWrapper<Dept> wrapper = new QueryWrapper<>();
+ wrapper.eq("dept_name",region.getName())
+ .eq("is_deleted",0);
+ Dept dept = deptService.getOne(wrapper);
+ // 查询当前网格在机构中是否存在,存在不做操作,否则则新增
+ 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){
+ Dept deptInfo = new Dept();
+ deptInfo.setParentId(dept.getId());
+ deptInfo.setFullName(grid.getGridName());
+ deptInfo.setDeptName(grid.getGridName());
+ deptInfo.setDeptCategory(1);
+ deptInfo.setTenantId("000000");
+ // 新增
+ deptService.save(deptInfo);
+ // 查询网格是否已存在(社区编号-网格名称),已存在更新,不存在插入新的
+ QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("grid_name",grid.getGridName())
+ .eq("is_deleted",0)
+ .eq("community_code",grid.getCommunityCode());
+ GridEntity one = getOne(queryWrapper);
+ if (null!=one){
+ grid.setId(one.getId());
+ grid.setDeptId(deptInfo.getId());
+ if (null!= grid.getGeom() && grid.getGeom().equals("")){
+ grid.setGeom(null);
+ }
+ // 更新
+ flag = updateById(grid);
+ }else {
+ grid.setDeptId(deptInfo.getId());
+ grid.setGeom(null);
+ // 插入
+ flag = save(grid);
+ }
+ }
+ return flag;
+ }
+
+ /**
+ * 网格数据同步处理
+ */
+ @Override
+ public Object asyncGridDept() {
+ List<GridEntity> list = baseMapper.selectGridAll();
+ for (GridEntity gridEntity : list) {
+ saveOrUpdateGrid(gridEntity);
+ }
+ return null;
+ }
+
+ /**
+ * 网格树
+ * @param grid
+ * @return
+ */
+ @Override
+ public Object getGridTree(GridVO grid) {
+ return NodeTreeUtil.getStringNodeTree(baseMapper.getGridTree());
+ }
}
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
new file mode 100644
index 0000000..f90d4f8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/service/impl/GridmanServiceImpl.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.grid.entity.GridEntity;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.modules.grid.excel.GridmanExcel;
+import org.springblade.modules.grid.service.IGridService;
+import org.springblade.modules.grid.vo.GridmanVO;
+import org.springblade.modules.grid.mapper.GridmanMapper;
+import org.springblade.modules.grid.service.IGridmanService;
+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.IRegionService;
+import org.springblade.modules.system.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 网格员表 服务实现类
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+@Service
+public class GridmanServiceImpl extends ServiceImpl<GridmanMapper, GridmanEntity> implements IGridmanService {
+
+ @Autowired
+ private IUserService userService;
+
+ @Autowired
+ private IGridService gridService;
+
+ @Autowired
+ private IRegionService regionService;
+
+ @Override
+ public IPage<GridmanVO> selectGridmanPage(IPage<GridmanVO> page, GridmanVO gridman) {
+ return page.setRecords(baseMapper.selectGridmanPage(page, gridman));
+ }
+
+ /**
+ * 网格员表 自定义新增或修改
+ * @param gridman
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean saveOrUpdateGridman(GridmanEntity gridman) {
+ boolean flag = false;
+ // 修改
+ if (null!=gridman.getId()) {
+ // 更新网格员信息
+ flag = updateById(gridman);
+ }else {
+ // 新增
+ // 先判断用户表中是否已存在该用户,如果已存在则不新增,需要更新角色
+ QueryWrapper<User> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted", 0).eq("account", gridman.getMobile());
+ List<User> list = userService.list(wrapper);
+ // 更新用户,查询是否需要更新角色
+ if (list.size() > 0) {
+ // 默认取出第一个
+ User user = list.get(0);
+ // 判断角色是否包好网格员的角色,如果没有则加入网格员的角色,有则不更改
+ if (!user.getRoleId().contains("1717429261910528001")) {
+ user.setRoleId(user.getRoleId() + "," + "1717429261910528001");
+ // 更新用户信息
+ userService.updateById(user);
+ }
+ //插入网格员信息
+ gridman.setUserId(user.getId());
+ flag = save(gridman);
+ } else {
+ saveUser(gridman);
+ // 插入网格员信息
+ flag = save(gridman);
+ }
+ }
+ // 返回
+ return flag;
+ }
+
+ /**
+ * 用户新增
+ * @param gridman
+ */
+ public void saveUser(GridmanEntity gridman) {
+ // 新增用户
+ User userInfo = new User();
+ // 设置机构
+ GridEntity gridEntity = gridService.getById(gridman.getGridId());
+ if (null != gridEntity) {
+ userInfo.setDeptId(gridEntity.getDeptId().toString());
+ }
+ // 设置账号信息
+ userInfo.setAccount(gridman.getMobile());
+ userInfo.setPhone(gridman.getMobile());
+ userInfo.setName(gridman.getGridmanName());
+ userInfo.setRealName(gridman.getGridmanName());
+ // 设置网格员角色
+ userInfo.setRoleId("1717429261910528001");
+ // 设置密码,默认密码为 123456
+ userInfo.setPassword("123456");
+ // 插入用户
+ userService.submit(userInfo);
+ // 设置网格信息
+ gridman.setUserId(userInfo.getId());
+ }
+
+ /**
+ * 网格员导入
+ * @param data
+ * @param isCovered
+ */
+ @Override
+ public void importGridman(List<GridmanExcel> data, Boolean isCovered) {
+ // 遍历
+ for (GridmanExcel gridmanExcel : data) {
+ GridmanEntity gridmanEntity = Objects.requireNonNull(BeanUtil.copy(gridmanExcel, GridmanEntity.class));
+ // 先查询当前网格社区对应的机构id
+ QueryWrapper<Region> regionWrapper = new QueryWrapper<>();
+ regionWrapper.eq("name",gridmanExcel.getCommunityName());
+ Region region = regionService.getOne(regionWrapper);
+ // 通过社区名称和网格名称获取网格id
+ QueryWrapper<GridEntity> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_deleted",0)
+ .eq("community_code",region.getCode())
+ .eq("grid_name",gridmanExcel.getGridName());
+ GridEntity gridEntity = gridService.getOne(queryWrapper);
+ // 设置网格id
+ gridmanEntity.setGridId(gridEntity.getId());
+ // 通过手机号查询网格员id
+ QueryWrapper<GridmanEntity> wrapper = new QueryWrapper<>();
+ wrapper.eq("is_deleted",0).eq("mobile",gridmanEntity.getMobile());
+ GridmanEntity one = getOne(wrapper);
+ if (one!=null){
+ gridmanEntity.setId(one.getId());
+ }
+ // 插入网格员
+ saveOrUpdateGridman(gridmanEntity);
+ }
+ }
+}
diff --git a/src/main/java/org/springblade/modules/grid/vo/GridmanVO.java b/src/main/java/org/springblade/modules/grid/vo/GridmanVO.java
new file mode 100644
index 0000000..7c9f6ff
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/vo/GridmanVO.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.core.tool.node.INode;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 网格员表 视图实体类
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class GridmanVO extends GridmanEntity {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 社区编号
+ */
+ @ApiModelProperty(value = "社区编号")
+ private String communityCode;
+
+}
diff --git a/src/main/java/org/springblade/modules/grid/wrapper/GridmanWrapper.java b/src/main/java/org/springblade/modules/grid/wrapper/GridmanWrapper.java
new file mode 100644
index 0000000..15df04c
--- /dev/null
+++ b/src/main/java/org/springblade/modules/grid/wrapper/GridmanWrapper.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.grid.wrapper;
+
+import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.modules.grid.entity.GridmanEntity;
+import org.springblade.modules.grid.vo.GridmanVO;
+import java.util.Objects;
+
+/**
+ * 网格员表 包装类,返回视图层所需的字段
+ *
+ * @author BladeX
+ * @since 2023-11-27
+ */
+public class GridmanWrapper extends BaseEntityWrapper<GridmanEntity, GridmanVO> {
+
+ public static GridmanWrapper build() {
+ return new GridmanWrapper();
+ }
+
+ @Override
+ public GridmanVO entityVO(GridmanEntity gridman) {
+ GridmanVO gridmanVO = Objects.requireNonNull(BeanUtil.copy(gridman, GridmanVO.class));
+
+ //User createUser = UserCache.getUser(gridman.getCreateUser());
+ //User updateUser = UserCache.getUser(gridman.getUpdateUser());
+ //gridmanVO.setCreateUserName(createUser.getName());
+ //gridmanVO.setUpdateUserName(updateUser.getName());
+
+ return gridmanVO;
+ }
+
+
+}
diff --git a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
index 701ca8d..58e3b64 100644
--- a/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
+++ b/src/main/java/org/springblade/modules/house/service/impl/HouseholdServiceImpl.java
@@ -17,6 +17,7 @@
package org.springblade.modules.house.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.logging.log4j.util.Strings;
import org.springblade.common.node.TreeStringNode;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.BeanUtil;
@@ -115,6 +116,12 @@
// 更新
flag = updateById(household);
}else {
+ // 往用户表中插入数据
+ // 通过手机号判断
+ if (!Strings.isBlank(household.getPhoneNumber())){
+ //判断用户是否存在
+
+ }
// 新增
household.setCreateTime(new Date());
household.setCreateUser(AuthUtil.getUserId());
diff --git a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
index ab844dc..48a3538 100644
--- a/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
+++ b/src/main/java/org/springblade/modules/place/service/impl/PlaceServiceImpl.java
@@ -158,19 +158,29 @@
userParams.setPhone(placeVO.getPhone());
User user = userService.getOne(Condition.getQueryWrapper(userParams));
- if (user != null) {
+ if (null!=user) {
//如果用户存在,则该用户id绑定场所
placeVO.setPrincipalUserId(user.getId());
newUser = user;
+ // 判断用户是否包含了居民角色,不包含则需更新
+ if (!user.getRoleId().contains("1717429059648606209")){
+ user.setRoleId(user.getRoleId() + ",1717429059648606209");
+ //更新
+ userService.updateById(user);
+ }
} else {
//如果用户不存在,则新增一个用户
newUser.setAccount(placeVO.getPhone());
newUser.setPhone(placeVO.getPhone());
newUser.setName(placeVO.getUsername());
newUser.setRealName(placeVO.getUsername());
- // 目前暂定居民角色,默认密码为 123456
+ // 社区群众部门
+ newUser.setDeptId("1727979636479037441");
+ // 目前暂定居民角色,
newUser.setRoleId("1717429059648606209");
+ //默认密码为 123456
newUser.setPassword("123456");
+ // 设置机构
// 用户新增
boolean submit = userService.submit(newUser);
//绑定id
--
Gitblit v1.9.3