完成百度网格功能模块、网格绘制、网格种类管理、网格信息管理、网格员列表
This commit is contained in:
parent
416cc38ad5
commit
1fd2dcb70c
@ -83,6 +83,14 @@ public class GridController extends DefaultBaseController {
|
||||
return gridService.list(params);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "网格(排除查询网格)列表", notes = "网格(排除查询网格)列表接口")
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@GetMapping("list/except/{gridId}")
|
||||
public List<GridDTO> listExcept(@PathVariable("gridId") String gridId) {
|
||||
Map<String, Object> params = requestParams();
|
||||
return gridService.listExcept(gridId, params);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "网格分页列表", notes = "网格分页列表接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"),
|
||||
|
@ -0,0 +1,91 @@
|
||||
package ink.wgink.module.map.controller.api.grid;
|
||||
|
||||
import ink.wgink.annotation.CheckRequestBodyAnnotation;
|
||||
import ink.wgink.common.base.DefaultBaseController;
|
||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||
import ink.wgink.module.map.pojo.dtos.grid.GridUserDTO;
|
||||
import ink.wgink.module.map.service.grid.IGridUserService;
|
||||
import ink.wgink.pojo.ListPage;
|
||||
import ink.wgink.pojo.result.ErrorResult;
|
||||
import ink.wgink.pojo.result.SuccessResult;
|
||||
import ink.wgink.pojo.result.SuccessResultList;
|
||||
import ink.wgink.pojo.vos.IdsVO;
|
||||
import io.swagger.annotations.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @ClassName: GridUserController
|
||||
* @Description: 网格用户
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 5:42 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "网格用户接口")
|
||||
@RestController
|
||||
@RequestMapping(ISystemConstant.API_PREFIX + "/grid/user")
|
||||
public class GridUserController extends DefaultBaseController {
|
||||
|
||||
@Autowired
|
||||
private IGridUserService gridUserService;
|
||||
|
||||
@ApiOperation(value = "删除网格用户", notes = "删除网格用户接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "ids", value = "ID列表,用下划线分隔", paramType = "path", example = "1_2_3")
|
||||
})
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@DeleteMapping("delete/{gridId}/{ids}")
|
||||
public SuccessResult delete(@PathVariable("gridId") String gridId, @PathVariable("ids") String ids) {
|
||||
gridUserService.delete(gridId, Arrays.asList(ids.split("\\_")));
|
||||
return new SuccessResult();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "修改网格用户", notes = "修改网格用户接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "gridIdId", value = "网格ID", paramType = "path")
|
||||
})
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@PutMapping("update/{gridId}")
|
||||
@CheckRequestBodyAnnotation
|
||||
public SuccessResult update(@PathVariable("gridId") String gridId, @RequestBody IdsVO idsVO) throws Exception {
|
||||
gridUserService.update(gridId, idsVO);
|
||||
return new SuccessResult();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "网格用户ID列表", notes = "网格用户ID列表接口")
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@GetMapping("list-user-id/{gridId}")
|
||||
public List<String> listUserId(@PathVariable("gridId") String gridId) {
|
||||
Map<String, Object> params = requestParams();
|
||||
return gridUserService.listUserId(gridId, params);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "网格用户列表", notes = "网格用户列表接口")
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@GetMapping("list/{gridId}")
|
||||
public List<GridUserDTO> list(@PathVariable("gridId") String gridId) {
|
||||
Map<String, Object> params = requestParams();
|
||||
return gridUserService.list(gridId, params);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "网格用户分页列表", notes = "网格用户分页列表接口")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "page", value = "当前页码", paramType = "query", dataType = "int", defaultValue = "1"),
|
||||
@ApiImplicitParam(name = "rows", value = "显示数量", paramType = "query", dataType = "int", defaultValue = "20"),
|
||||
@ApiImplicitParam(name = "keywords", value = "关键字", paramType = "query", dataType = "String"),
|
||||
@ApiImplicitParam(name = "startTime", value = "开始时间", paramType = "query", dataType = "String"),
|
||||
@ApiImplicitParam(name = "endTime", value = "结束时间", paramType = "query", dataType = "String")
|
||||
})
|
||||
@ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)})
|
||||
@GetMapping("listpage/{gridId}")
|
||||
public SuccessResultList<List<GridUserDTO>> listPage(@PathVariable("gridId") String gridId, ListPage page) {
|
||||
Map<String, Object> params = requestParams();
|
||||
page.setParams(params);
|
||||
return gridUserService.listPage(gridId, page);
|
||||
}
|
||||
|
||||
}
|
@ -14,7 +14,7 @@ import org.springframework.web.servlet.ModelAndView;
|
||||
* @Date: 2021/10/19 11:54 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Api(tags = ISystemConstant.API_TAGS_SYSTEM_PREFIX + "网格组接口")
|
||||
@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "网格组")
|
||||
@Controller
|
||||
@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/grid-group")
|
||||
public class GridGroupRouteController {
|
||||
|
@ -0,0 +1,42 @@
|
||||
package ink.wgink.module.map.controller.route.grid;
|
||||
|
||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
/**
|
||||
* @ClassName: GridRouteController
|
||||
* @Description: 网格路由
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 9:33 上午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "网格")
|
||||
@Controller
|
||||
@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/grid")
|
||||
public class GridRouteController {
|
||||
|
||||
@GetMapping("save")
|
||||
public ModelAndView save() {
|
||||
return new ModelAndView("grid/grid/save");
|
||||
}
|
||||
|
||||
@GetMapping("update")
|
||||
public ModelAndView update() {
|
||||
return new ModelAndView("grid/grid/update");
|
||||
}
|
||||
|
||||
@GetMapping("get")
|
||||
public ModelAndView get() {
|
||||
return new ModelAndView("grid/grid/get");
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
public ModelAndView list() {
|
||||
return new ModelAndView("grid/grid/list");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package ink.wgink.module.map.controller.route.grid;
|
||||
|
||||
import ink.wgink.interfaces.consts.ISystemConstant;
|
||||
import io.swagger.annotations.Api;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
/**
|
||||
* @ClassName: GridUserRouteController
|
||||
* @Description: 网格用户路由
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 5:44 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Api(tags = ISystemConstant.ROUTE_TAGS_PREFIX + "网格用户")
|
||||
@Controller
|
||||
@RequestMapping(ISystemConstant.ROUTE_PREFIX + "/grid/user")
|
||||
public class GridUserRouteController {
|
||||
|
||||
@GetMapping("list")
|
||||
public ModelAndView list() {
|
||||
return new ModelAndView("grid/grid/user/list");
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
package ink.wgink.module.map.controller.staticfile;
|
||||
|
||||
import ink.wgink.util.ResourceUtil;
|
||||
import ink.wgink.util.request.StaticResourceRequestUtil;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @ClassName: BaiduMapStaticController
|
||||
* @Description: 百度地图静态文件
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 10:13 上午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("static/baidu-map")
|
||||
public class BaiduMapStaticController {
|
||||
|
||||
@GetMapping("{fileName}")
|
||||
public void root(HttpServletResponse httpServletResponse, @PathVariable("fileName") String fileName) throws IOException {
|
||||
File file = ResourceUtil.getResourceFile("static/baidu-map/" + fileName);
|
||||
StaticResourceRequestUtil.download(httpServletResponse, file, fileName);
|
||||
}
|
||||
|
||||
}
|
@ -92,5 +92,12 @@ public interface IGridDao extends IInitBaseTable {
|
||||
*/
|
||||
List<GridDTO> listGroup(Map<String, Object> params) throws SearchException;
|
||||
|
||||
|
||||
/**
|
||||
* 区域最后网格
|
||||
*
|
||||
* @param params
|
||||
* @return
|
||||
* @throws SearchException
|
||||
*/
|
||||
GridPO getAreaLastPO(Map<String, Object> params) throws SearchException;
|
||||
}
|
||||
|
@ -45,6 +45,8 @@ public class GridDTO implements Serializable {
|
||||
private String relationId;
|
||||
@ApiModelProperty(name = "gmtCreate", value = "添加时间")
|
||||
private String gmtCreate;
|
||||
@ApiModelProperty(name = "gmtModified", value = "修改时间")
|
||||
private String gmtModified;
|
||||
@ApiModelProperty(name = "relationIdArray", value = "关联ID列表")
|
||||
private List<String> relationIdArray;
|
||||
@ApiModelProperty(name = "pointArray", value = "网格点列表")
|
||||
@ -146,6 +148,14 @@ public class GridDTO implements Serializable {
|
||||
this.gmtCreate = gmtCreate;
|
||||
}
|
||||
|
||||
public String getGmtModified() {
|
||||
return gmtModified == null ? "" : gmtModified.trim();
|
||||
}
|
||||
|
||||
public void setGmtModified(String gmtModified) {
|
||||
this.gmtModified = gmtModified;
|
||||
}
|
||||
|
||||
public List<String> getRelationIdArray() {
|
||||
if (relationIdArray == null) {
|
||||
return new ArrayList<>();
|
||||
|
@ -21,10 +21,10 @@ public class GridPointDTO implements Serializable {
|
||||
private static final long serialVersionUID = -2367199018377785048L;
|
||||
@ApiModelProperty(name = "gridId", value = "网格ID")
|
||||
private String gridId;
|
||||
@ApiModelProperty(name = "pointLng", value = "点经度")
|
||||
private String pointLng;
|
||||
@ApiModelProperty(name = "pointLat", value = "点纬度")
|
||||
private String pointLat;
|
||||
@ApiModelProperty(name = "lng", value = "点经度")
|
||||
private String lng;
|
||||
@ApiModelProperty(name = "lat", value = "点纬度")
|
||||
private String lat;
|
||||
|
||||
public String getGridId() {
|
||||
return gridId == null ? "" : gridId.trim();
|
||||
@ -34,20 +34,20 @@ public class GridPointDTO implements Serializable {
|
||||
this.gridId = gridId;
|
||||
}
|
||||
|
||||
public String getPointLng() {
|
||||
return pointLng == null ? "" : pointLng.trim();
|
||||
public String getLng() {
|
||||
return lng == null ? "" : lng.trim();
|
||||
}
|
||||
|
||||
public void setPointLng(String pointLng) {
|
||||
this.pointLng = pointLng;
|
||||
public void setLng(String lng) {
|
||||
this.lng = lng;
|
||||
}
|
||||
|
||||
public String getPointLat() {
|
||||
return pointLat == null ? "" : pointLat.trim();
|
||||
public String getLat() {
|
||||
return lat == null ? "" : lat.trim();
|
||||
}
|
||||
|
||||
public void setPointLat(String pointLat) {
|
||||
this.pointLat = pointLat;
|
||||
public void setLat(String lat) {
|
||||
this.lat = lat;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -56,9 +56,9 @@ public class GridPointDTO implements Serializable {
|
||||
sb.append("\"gridId\":\"")
|
||||
.append(gridId).append('\"');
|
||||
sb.append(",\"lng\":\"")
|
||||
.append(pointLng).append('\"');
|
||||
.append(lng).append('\"');
|
||||
sb.append(",\"lat\":\"")
|
||||
.append(pointLat).append('\"');
|
||||
.append(lat).append('\"');
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
|
@ -0,0 +1,76 @@
|
||||
package ink.wgink.module.map.pojo.dtos.grid;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
/**
|
||||
* @ClassName: GridUserDTO
|
||||
* @Description: 网格用户
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 5:46 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@ApiModel
|
||||
public class GridUserDTO {
|
||||
|
||||
@ApiModelProperty(name = "gridId", value = "网格ID")
|
||||
private String gridId;
|
||||
@ApiModelProperty(name = "userId", value = "用户ID")
|
||||
private String userId;
|
||||
@ApiModelProperty(name = "userUsername", value = "用户名")
|
||||
private String userUsername;
|
||||
@ApiModelProperty(name = "userName", value = "用户昵称")
|
||||
private String userName;
|
||||
@ApiModelProperty(name = "userPhone", value = "用户电话")
|
||||
private String userPhone;
|
||||
@ApiModelProperty(name = "gmtCreate", value = "添加时间")
|
||||
private String gmtCreate;
|
||||
|
||||
public String getGridId() {
|
||||
return gridId == null ? "" : gridId.trim();
|
||||
}
|
||||
|
||||
public void setGridId(String gridId) {
|
||||
this.gridId = gridId;
|
||||
}
|
||||
|
||||
public String getUserId() {
|
||||
return userId == null ? "" : userId.trim();
|
||||
}
|
||||
|
||||
public void setUserId(String userId) {
|
||||
this.userId = userId;
|
||||
}
|
||||
|
||||
public String getUserUsername() {
|
||||
return userUsername == null ? "" : userUsername.trim();
|
||||
}
|
||||
|
||||
public void setUserUsername(String userUsername) {
|
||||
this.userUsername = userUsername;
|
||||
}
|
||||
|
||||
public String getUserName() {
|
||||
return userName == null ? "" : userName.trim();
|
||||
}
|
||||
|
||||
public void setUserName(String userName) {
|
||||
this.userName = userName;
|
||||
}
|
||||
|
||||
public String getUserPhone() {
|
||||
return userPhone == null ? "" : userPhone.trim();
|
||||
}
|
||||
|
||||
public void setUserPhone(String userPhone) {
|
||||
this.userPhone = userPhone;
|
||||
}
|
||||
|
||||
public String getGmtCreate() {
|
||||
return gmtCreate == null ? "" : gmtCreate.trim();
|
||||
}
|
||||
|
||||
public void setGmtCreate(String gmtCreate) {
|
||||
this.gmtCreate = gmtCreate;
|
||||
}
|
||||
}
|
@ -18,10 +18,10 @@ public class GridPointVO {
|
||||
|
||||
@ApiModelProperty(name = "gridId", value = "网格ID")
|
||||
private String gridId;
|
||||
@ApiModelProperty(name = "pointLng", value = "经度")
|
||||
private String pointLng;
|
||||
@ApiModelProperty(name = "pointLat", value = "纬度")
|
||||
private String pointLat;
|
||||
@ApiModelProperty(name = "lng", value = "经度")
|
||||
private String lng;
|
||||
@ApiModelProperty(name = "lat", value = "纬度")
|
||||
private String lat;
|
||||
|
||||
public String getGridId() {
|
||||
return gridId == null ? "" : gridId.trim();
|
||||
@ -31,20 +31,20 @@ public class GridPointVO {
|
||||
this.gridId = gridId;
|
||||
}
|
||||
|
||||
public String getPointLng() {
|
||||
return pointLng == null ? "" : pointLng.trim();
|
||||
public String getLng() {
|
||||
return lng == null ? "" : lng.trim();
|
||||
}
|
||||
|
||||
public void setPointLng(String pointLng) {
|
||||
this.pointLng = pointLng;
|
||||
public void setLng(String lng) {
|
||||
this.lng = lng;
|
||||
}
|
||||
|
||||
public String getPointLat() {
|
||||
return pointLat == null ? "" : pointLat.trim();
|
||||
public String getLat() {
|
||||
return lat == null ? "" : lat.trim();
|
||||
}
|
||||
|
||||
public void setPointLat(String pointLat) {
|
||||
this.pointLat = pointLat;
|
||||
public void setLat(String lat) {
|
||||
this.lat = lat;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -53,9 +53,9 @@ public class GridPointVO {
|
||||
sb.append("\"gridId\":\"")
|
||||
.append(gridId).append('\"');
|
||||
sb.append(",\"lng\":\"")
|
||||
.append(pointLng).append('\"');
|
||||
.append(lng).append('\"');
|
||||
sb.append(",\"lat\":\"")
|
||||
.append(pointLat).append('\"');
|
||||
.append(lat).append('\"');
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
|
@ -1,5 +1,8 @@
|
||||
package ink.wgink.module.map.pojo.vos.grid;
|
||||
|
||||
import ink.wgink.annotation.CheckBeanAnnotation;
|
||||
import ink.wgink.annotation.CheckEmptyAnnotation;
|
||||
import ink.wgink.annotation.CheckNullAnnotation;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
@ -7,9 +10,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* When you feel like quitting. Think about why you started
|
||||
* 当你想要放弃的时候,想想当初你为何开始
|
||||
*
|
||||
* @ClassName: BaiduGridVO
|
||||
* @Description: 百度地图网格
|
||||
* @Author: WangGeng
|
||||
@ -21,14 +21,23 @@ public class GridVO {
|
||||
|
||||
@ApiModelProperty(name = "id", value = "网格ID")
|
||||
private String id;
|
||||
@ApiModelProperty(name = "fillColor", value = "填充颜色")
|
||||
private String fillColor;
|
||||
@ApiModelProperty(name = "gridName", value = "网格名称")
|
||||
@CheckEmptyAnnotation(name = "网格名称")
|
||||
private String gridName;
|
||||
@ApiModelProperty(name = "relationIdArray", value = "关联ID列表")
|
||||
private List<String> relationIdArray;
|
||||
@ApiModelProperty(name = "pointArray", value = "网格点列表")
|
||||
private List<GridPointVO> pointArray;
|
||||
@ApiModelProperty(name = "gridSummary", value = "网格描述")
|
||||
private String gridSummary;
|
||||
@ApiModelProperty(name = "gridGroupId", value = "网格组ID")
|
||||
private String gridGroupId;
|
||||
@ApiModelProperty(name = "gridDuty", value = "网格职责")
|
||||
private String gridDuty;
|
||||
@ApiModelProperty(name = "areaCode", value = "区域编码")
|
||||
private String areaCode;
|
||||
@ApiModelProperty(name = "areaName", value = "区域名称")
|
||||
private String areaName;
|
||||
@ApiModelProperty(name = "grids", value = "网格列表")
|
||||
@CheckNullAnnotation(name = "网格")
|
||||
@CheckBeanAnnotation
|
||||
private Grid grid;
|
||||
|
||||
public String getId() {
|
||||
return id == null ? "" : id.trim();
|
||||
@ -38,14 +47,6 @@ public class GridVO {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getFillColor() {
|
||||
return fillColor == null ? "" : fillColor.trim();
|
||||
}
|
||||
|
||||
public void setFillColor(String fillColor) {
|
||||
this.fillColor = fillColor;
|
||||
}
|
||||
|
||||
public String getGridName() {
|
||||
return gridName == null ? "" : gridName.trim();
|
||||
}
|
||||
@ -54,42 +55,86 @@ public class GridVO {
|
||||
this.gridName = gridName;
|
||||
}
|
||||
|
||||
public List<String> getRelationIdArray() {
|
||||
if (relationIdArray == null) {
|
||||
return new ArrayList<>();
|
||||
public String getGridSummary() {
|
||||
return gridSummary == null ? "" : gridSummary.trim();
|
||||
}
|
||||
|
||||
public void setGridSummary(String gridSummary) {
|
||||
this.gridSummary = gridSummary;
|
||||
}
|
||||
|
||||
public String getGridGroupId() {
|
||||
return gridGroupId == null ? "" : gridGroupId.trim();
|
||||
}
|
||||
|
||||
public void setGridGroupId(String gridGroupId) {
|
||||
this.gridGroupId = gridGroupId;
|
||||
}
|
||||
|
||||
public String getGridDuty() {
|
||||
return gridDuty == null ? "" : gridDuty.trim();
|
||||
}
|
||||
|
||||
public void setGridDuty(String gridDuty) {
|
||||
this.gridDuty = gridDuty;
|
||||
}
|
||||
|
||||
public String getAreaCode() {
|
||||
return areaCode == null ? "" : areaCode.trim();
|
||||
}
|
||||
|
||||
public void setAreaCode(String areaCode) {
|
||||
this.areaCode = areaCode;
|
||||
}
|
||||
|
||||
public String getAreaName() {
|
||||
return areaName == null ? "" : areaName.trim();
|
||||
}
|
||||
|
||||
public void setAreaName(String areaName) {
|
||||
this.areaName = areaName;
|
||||
}
|
||||
|
||||
public Grid getGrid() {
|
||||
return grid;
|
||||
}
|
||||
|
||||
public void setGrid(Grid grid) {
|
||||
this.grid = grid;
|
||||
}
|
||||
|
||||
public static class Grid {
|
||||
@ApiModelProperty(name = "fillColor", value = "填充颜色")
|
||||
private String fillColor;
|
||||
@ApiModelProperty(name = "relationIdArray", value = "关联ID列表")
|
||||
private List<String> relationIdArray;
|
||||
@ApiModelProperty(name = "pointArray", value = "网格点列表")
|
||||
@CheckEmptyAnnotation(name = "网格点列表")
|
||||
private List<GridPointVO> pointArray;
|
||||
|
||||
public String getFillColor() {
|
||||
return fillColor == null ? "" : fillColor.trim();
|
||||
}
|
||||
return relationIdArray;
|
||||
}
|
||||
|
||||
public void setRelationIdArray(List<String> relationIdArray) {
|
||||
this.relationIdArray = relationIdArray;
|
||||
}
|
||||
|
||||
public List<GridPointVO> getPointArray() {
|
||||
if (pointArray == null) {
|
||||
return new ArrayList<>();
|
||||
public void setFillColor(String fillColor) {
|
||||
this.fillColor = fillColor;
|
||||
}
|
||||
|
||||
public List<String> getRelationIdArray() {
|
||||
return relationIdArray == null ? new ArrayList<>() : relationIdArray;
|
||||
}
|
||||
|
||||
public void setRelationIdArray(List<String> relationIdArray) {
|
||||
this.relationIdArray = relationIdArray;
|
||||
}
|
||||
|
||||
public List<GridPointVO> getPointArray() {
|
||||
return pointArray == null ? new ArrayList<>() : pointArray;
|
||||
}
|
||||
|
||||
public void setPointArray(List<GridPointVO> pointArray) {
|
||||
this.pointArray = pointArray;
|
||||
}
|
||||
return pointArray;
|
||||
}
|
||||
|
||||
public void setPointArray(List<GridPointVO> pointArray) {
|
||||
this.pointArray = pointArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
final StringBuilder sb = new StringBuilder("{");
|
||||
sb.append("\"id\":\"")
|
||||
.append(id).append('\"');
|
||||
sb.append(",\"fillColor\":\"")
|
||||
.append(fillColor).append('\"');
|
||||
sb.append(",\"gridName\":\"")
|
||||
.append(gridName).append('\"');
|
||||
sb.append(",\"relationIdArray\":")
|
||||
.append(relationIdArray);
|
||||
sb.append(",\"pointArray\":")
|
||||
.append(pointArray);
|
||||
sb.append('}');
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
@ -23,13 +23,28 @@ public interface IGridRelationService {
|
||||
void save(String gridId, List<String> relationIdArray);
|
||||
|
||||
/**
|
||||
* 删除网格
|
||||
* 删除网格关联
|
||||
*
|
||||
* @param gridId
|
||||
*/
|
||||
void delete(String gridId);
|
||||
|
||||
/**
|
||||
* 删除网格关联
|
||||
*
|
||||
* @param gridId 网格ID
|
||||
* @param relationId 关联ID
|
||||
*/
|
||||
void delete(String gridId, String relationId);
|
||||
|
||||
/**
|
||||
* 删除网格关联
|
||||
*
|
||||
* @param gridId 网格ID
|
||||
* @param relationIds 关联ID列表
|
||||
*/
|
||||
void delete(String gridId, List<String> relationIds);
|
||||
|
||||
/**
|
||||
* 删除网格关联
|
||||
*
|
||||
@ -99,4 +114,13 @@ public interface IGridRelationService {
|
||||
* @return
|
||||
*/
|
||||
List<String> listGridId(List<String> relationIds);
|
||||
|
||||
/**
|
||||
* 网格关联ID列表
|
||||
*
|
||||
* @param gridId
|
||||
* @return
|
||||
*/
|
||||
List<String> listRelationId(String gridId);
|
||||
|
||||
}
|
||||
|
@ -165,4 +165,13 @@ public interface IGridService {
|
||||
* @return
|
||||
*/
|
||||
SuccessResultList<List<GridDTO>> listPage(ListPage page);
|
||||
|
||||
/**
|
||||
* 网格(排除查询网格)
|
||||
*
|
||||
* @param gridId 排除的网格ID
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
List<GridDTO> listExcept(String gridId, Map<String, Object> params);
|
||||
}
|
||||
|
@ -0,0 +1,63 @@
|
||||
package ink.wgink.module.map.service.grid;
|
||||
|
||||
import ink.wgink.module.map.pojo.dtos.grid.GridUserDTO;
|
||||
import ink.wgink.pojo.ListPage;
|
||||
import ink.wgink.pojo.result.SuccessResultList;
|
||||
import ink.wgink.pojo.vos.IdsVO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @ClassName: IGridUserService
|
||||
* @Description: 网格用户
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 5:43 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
public interface IGridUserService {
|
||||
|
||||
/**
|
||||
* 删除网格用户
|
||||
*
|
||||
* @param gridId
|
||||
* @param userIds
|
||||
*/
|
||||
void delete(String gridId, List<String> userIds);
|
||||
|
||||
/**
|
||||
* 修改网格用户
|
||||
*
|
||||
* @param gridId
|
||||
* @param idsVO
|
||||
*/
|
||||
void update(String gridId, IdsVO idsVO);
|
||||
|
||||
/**
|
||||
* 网格用户ID列表
|
||||
*
|
||||
* @param gridId
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
List<String> listUserId(String gridId, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 网格用户列表
|
||||
*
|
||||
* @param gridId
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
List<GridUserDTO> list(String gridId, Map<String, Object> params);
|
||||
|
||||
/**
|
||||
* 网格用户分页列表
|
||||
*
|
||||
* @param gridId
|
||||
* @param page
|
||||
* @return
|
||||
*/
|
||||
SuccessResultList<List<GridUserDTO>> listPage(String gridId, ListPage page);
|
||||
|
||||
}
|
@ -35,8 +35,8 @@ public class GridPointServiceImpl extends DefaultBaseService implements IGridPoi
|
||||
Map<String, Object> params = getHashMap(4);
|
||||
params.put("gridId", gridId);
|
||||
for (GridPointVO gridPointVO : pointArray) {
|
||||
params.put("lng", gridPointVO.getPointLng());
|
||||
params.put("lat", gridPointVO.getPointLat());
|
||||
params.put("lng", gridPointVO.getLng());
|
||||
params.put("lat", gridPointVO.getLat());
|
||||
gridPointDao.save(params);
|
||||
}
|
||||
}
|
||||
|
@ -30,12 +30,20 @@ public class GridRelationServiceImpl extends DefaultBaseService implements IGrid
|
||||
}
|
||||
Map<String, Object> params = getHashMap(4);
|
||||
params.put("gridId", gridId);
|
||||
setSaveInfo(params);
|
||||
for (String relationId : relationIdArray) {
|
||||
params.put("relationId", relationId);
|
||||
gridRelationDao.save(params);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String gridId) {
|
||||
Map<String, Object> params = getHashMap(2);
|
||||
params.put("gridId", gridId);
|
||||
gridRelationDao.delete(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String gridId, String relationId) throws RemoveException {
|
||||
Map<String, Object> params = getHashMap(4);
|
||||
@ -44,6 +52,14 @@ public class GridRelationServiceImpl extends DefaultBaseService implements IGrid
|
||||
gridRelationDao.delete(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(String gridId, List<String> relationIds) {
|
||||
Map<String, Object> params = getHashMap(4);
|
||||
params.put("gridId", gridId);
|
||||
params.put("relationIds", relationIds);
|
||||
gridRelationDao.delete(params);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteByGridIds(List<String> gridIds) {
|
||||
Map<String, Object> params = getHashMap(2);
|
||||
@ -103,6 +119,12 @@ public class GridRelationServiceImpl extends DefaultBaseService implements IGrid
|
||||
return listGridIdByGridRelation(gridRelationDTOs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listRelationId(String gridId) {
|
||||
List<GridRelationDTO> gridRelationDTOs = listByGridId(gridId);
|
||||
return listRelationIdByGridRelation(gridRelationDTOs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网格ID列表
|
||||
*
|
||||
@ -120,4 +142,21 @@ public class GridRelationServiceImpl extends DefaultBaseService implements IGrid
|
||||
return new ArrayList<>(gridIdSet);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网格ID列表
|
||||
*
|
||||
* @param gridRelationDTOs
|
||||
* @return
|
||||
*/
|
||||
private List<String> listRelationIdByGridRelation(List<GridRelationDTO> gridRelationDTOs) {
|
||||
if (gridRelationDTOs.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
Set<String> relationIdSet = new HashSet<>();
|
||||
gridRelationDTOs.forEach(gridRelationDTO -> {
|
||||
relationIdSet.add(gridRelationDTO.getRelationId());
|
||||
});
|
||||
return new ArrayList<>(relationIdSet);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,8 +16,11 @@ import ink.wgink.module.map.service.grid.IGridRelationService;
|
||||
import ink.wgink.module.map.service.grid.IGridService;
|
||||
import ink.wgink.pojo.ListPage;
|
||||
import ink.wgink.pojo.result.SuccessResultList;
|
||||
import ink.wgink.util.ArrayListUtil;
|
||||
import ink.wgink.util.UUIDUtil;
|
||||
import ink.wgink.util.map.HashMapUtil;
|
||||
import ink.wgink.util.point.Point;
|
||||
import ink.wgink.util.point.PointUtil;
|
||||
import ink.wgink.util.string.WStringUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -53,13 +56,18 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
@Override
|
||||
public String saveAndReturnId(GridVO gridVO) throws Exception {
|
||||
String gridId = UUIDUtil.getUUID();
|
||||
List<String> relationIdArray = gridVO.getRelationIdArray();
|
||||
List<GridPointVO> pointArray = gridVO.getPointArray();
|
||||
List<String> relationIdArray = gridVO.getGrid().getRelationIdArray();
|
||||
List<GridPointVO> pointArray = gridVO.getGrid().getPointArray();
|
||||
// 保存网格
|
||||
Map<String, Object> params = HashMapUtil.beanToMap(gridVO);
|
||||
params.put("gridSquare", getSquare(pointArray));
|
||||
params.put("fillColor", gridVO.getGrid().getFillColor());
|
||||
GridPO areaLastPO = getAreaLastPO(gridVO.getAreaCode());
|
||||
params.put("gridCode", areaLastPO == null ? String.format("%s001", gridVO.getAreaCode().substring(0, 12)) : Long.valueOf(areaLastPO.getGridCode()) + 1);
|
||||
params.put("gridId", gridId);
|
||||
params.remove("relationIdArray");
|
||||
params.remove("pointArray");
|
||||
params.remove("grid");
|
||||
setSaveInfo(params);
|
||||
gridDao.save(params);
|
||||
// 保存拓展属性
|
||||
@ -134,14 +142,26 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
|
||||
@Override
|
||||
public void update(String gridId, GridVO gridVO) throws Exception {
|
||||
GridVO.Grid grid = gridVO.getGrid();
|
||||
Map<String, Object> params = HashMapUtil.beanToMap(gridVO);
|
||||
params.put("fillColor", gridVO.getGrid().getFillColor());
|
||||
params.put("gridSquare", getSquare(grid.getPointArray()));
|
||||
params.put("gridId", gridId);
|
||||
setUpdateInfo(params);
|
||||
gridDao.update(params);
|
||||
|
||||
// 删除原有节点
|
||||
gridPointService.deleteByGridId(gridId);
|
||||
// 新增原有节点
|
||||
gridPointService.save(gridId, grid.getPointArray());
|
||||
}
|
||||
|
||||
@Override
|
||||
public GridDTO get(Map<String, Object> params) {
|
||||
return gridDao.get(params);
|
||||
GridDTO gridDTO = gridDao.get(params);
|
||||
setGridPoints(gridDTO);
|
||||
setGridRelation(gridDTO);
|
||||
return gridDTO;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -165,7 +185,7 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
|
||||
@Override
|
||||
public List<GridDTO> list(Map<String, Object> params) {
|
||||
List<GridDTO> gridDTOs = gridDao.list(params);
|
||||
List<GridDTO> gridDTOs = ArrayListUtil.deepClone(gridDao.list(params), GridDTO.class);
|
||||
setGridPoints(gridDTOs);
|
||||
setGridRelation(gridDTOs);
|
||||
return gridDTOs;
|
||||
@ -271,6 +291,34 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
return new SuccessResultList<>(gridDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GridDTO> listExcept(String gridId, Map<String, Object> params) {
|
||||
List<GridDTO> gridDTOs = list(params);
|
||||
for (GridDTO gridDTO : gridDTOs) {
|
||||
if (StringUtils.equals(gridId, gridDTO.getGridId())) {
|
||||
gridDTOs.remove(gridDTO);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return gridDTOs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置网格点
|
||||
*
|
||||
* @param gridDTO
|
||||
*/
|
||||
private void setGridPoints(GridDTO gridDTO) {
|
||||
if (gridDTO == null) {
|
||||
return;
|
||||
}
|
||||
List<GridPointDTO> gridPointDTOs = gridPointService.list(gridDTO.getGridId());
|
||||
List<GridPointDTO> pointArray = new ArrayList<>();
|
||||
for (GridPointDTO gridPointDTO : gridPointDTOs) {
|
||||
pointArray.add(gridPointDTO);
|
||||
}
|
||||
gridDTO.setPointArray(pointArray);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置网格点
|
||||
@ -302,6 +350,23 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置关联
|
||||
*
|
||||
* @param gridDTO
|
||||
*/
|
||||
private void setGridRelation(GridDTO gridDTO) {
|
||||
if (gridDTO == null) {
|
||||
return;
|
||||
}
|
||||
List<GridRelationDTO> gridRelationDTOs = gridRelationService.listByGridId(gridDTO.getGridId());
|
||||
List<String> gridRelationIds = gridDTO.getRelationIdArray();
|
||||
for (GridRelationDTO gridRelationDTO : gridRelationDTOs) {
|
||||
gridRelationIds.add(gridRelationDTO.getRelationId());
|
||||
}
|
||||
gridDTO.setRelationIdArray(gridRelationIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置关联
|
||||
*
|
||||
@ -357,4 +422,31 @@ public class GridServiceImpl extends DefaultBaseService implements IGridService
|
||||
return gridGroups;
|
||||
}
|
||||
|
||||
/**
|
||||
* 得到面积,单位平方米
|
||||
*
|
||||
* @param gridPointVOs
|
||||
* @return
|
||||
*/
|
||||
private Double getSquare(List<GridPointVO> gridPointVOs) {
|
||||
List<Point> points = new ArrayList<>();
|
||||
for (GridPointVO gridPointVO : gridPointVOs) {
|
||||
Point point = new Point(Double.valueOf(gridPointVO.getLng()), Double.valueOf(gridPointVO.getLat()));
|
||||
points.add(point);
|
||||
}
|
||||
return PointUtil.getSqua(points);
|
||||
}
|
||||
|
||||
/**
|
||||
* 区域最后网格
|
||||
*
|
||||
* @param areaCode
|
||||
* @return
|
||||
*/
|
||||
private GridPO getAreaLastPO(String areaCode) {
|
||||
Map<String, Object> params = getHashMap(2);
|
||||
params.put("areaCode", areaCode);
|
||||
return gridDao.getAreaLastPO(params);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,96 @@
|
||||
package ink.wgink.module.map.service.grid.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import ink.wgink.common.base.DefaultBaseService;
|
||||
import ink.wgink.interfaces.user.IUserBaseService;
|
||||
import ink.wgink.module.map.pojo.dtos.grid.GridRelationDTO;
|
||||
import ink.wgink.module.map.pojo.dtos.grid.GridUserDTO;
|
||||
import ink.wgink.module.map.service.grid.IGridRelationService;
|
||||
import ink.wgink.module.map.service.grid.IGridUserService;
|
||||
import ink.wgink.pojo.ListPage;
|
||||
import ink.wgink.pojo.dtos.user.UserDTO;
|
||||
import ink.wgink.pojo.result.SuccessResultList;
|
||||
import ink.wgink.pojo.vos.IdsVO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @ClassName: GridUserServiceImpl
|
||||
* @Description: 网格用户
|
||||
* @Author: wanggeng
|
||||
* @Date: 2021/10/20 5:43 下午
|
||||
* @Version: 1.0
|
||||
*/
|
||||
@Service
|
||||
public class GridUserServiceImpl extends DefaultBaseService implements IGridUserService {
|
||||
|
||||
@Autowired
|
||||
private IUserBaseService userBaseService;
|
||||
@Autowired
|
||||
private IGridRelationService gridRelationService;
|
||||
|
||||
@Override
|
||||
public void delete(String gridId, List<String> userIds) {
|
||||
gridRelationService.delete(gridId, userIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(String gridId, IdsVO idsVO) {
|
||||
// 删除全部关联关系
|
||||
gridRelationService.delete(gridId);
|
||||
List<String> userIds = idsVO.getIds();
|
||||
if (userIds.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
gridRelationService.save(gridId, userIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> listUserId(String gridId, Map<String, Object> params) {
|
||||
return gridRelationService.listRelationId(gridId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GridUserDTO> list(String gridId, Map<String, Object> params) {
|
||||
List<GridRelationDTO> gridRelationDTOs = gridRelationService.listByGridId(gridId);
|
||||
if (gridRelationDTOs.isEmpty()) {
|
||||
return new ArrayList();
|
||||
}
|
||||
Set<String> userIdSet = new HashSet<>();
|
||||
for (GridRelationDTO gridRelationDTO : gridRelationDTOs) {
|
||||
userIdSet.add(gridRelationDTO.getRelationId());
|
||||
}
|
||||
List<UserDTO> userDTOs = userBaseService.listByUserIds(new ArrayList<>(userIdSet));
|
||||
if (userDTOs.isEmpty()) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
List<GridUserDTO> gridUserDTOs = new ArrayList<>();
|
||||
for (UserDTO userDTO : userDTOs) {
|
||||
GridUserDTO gridUserDTO = new GridUserDTO();
|
||||
gridUserDTO.setGridId(gridId);
|
||||
BeanUtils.copyProperties(userDTO, gridUserDTO);
|
||||
for (GridRelationDTO gridRelationDTO : gridRelationDTOs) {
|
||||
if (StringUtils.equals(gridUserDTO.getUserId(), gridRelationDTO.getRelationId())) {
|
||||
gridUserDTO.setGmtCreate(gridRelationDTO.getGmtCreate());
|
||||
break;
|
||||
}
|
||||
}
|
||||
gridUserDTOs.add(gridUserDTO);
|
||||
}
|
||||
return gridUserDTOs;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SuccessResultList<List<GridUserDTO>> listPage(String gridId, ListPage page) {
|
||||
PageHelper.startPage(page.getPage(), page.getRows());
|
||||
List<GridUserDTO> gridUserDTOs = list(gridId, page.getParams());
|
||||
PageInfo<GridUserDTO> pageInfo = new PageInfo<>(gridUserDTOs);
|
||||
return new SuccessResultList<>(gridUserDTOs, pageInfo.getPageNum(), pageInfo.getTotal());
|
||||
}
|
||||
|
||||
}
|
@ -18,6 +18,7 @@
|
||||
<result column="fill_color" property="fillColor"/>
|
||||
<result column="relation_id" property="relationId"/>
|
||||
<result column="gmt_create" property="gmtCreate"/>
|
||||
<result column="gmt_modified" property="gmtModified"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="gridPO" type="ink.wgink.module.map.pojo.pos.grid.GridPO">
|
||||
@ -109,7 +110,12 @@
|
||||
modifier = #{modifier},
|
||||
gmt_modified = #{gmtModified}
|
||||
WHERE
|
||||
grid_id = #{gridId}
|
||||
<if test="gridIds != null and gridIds.size > 0">
|
||||
grid_id IN
|
||||
<foreach collection="gridIds" index="index" open="(" separator="," close=")">
|
||||
#{gridIds[${index}]}
|
||||
</foreach>
|
||||
</if>
|
||||
</update>
|
||||
|
||||
<!-- 删除网格 -->
|
||||
@ -136,6 +142,18 @@
|
||||
<if test="gridName != null and gridName != ''">
|
||||
grid_name = #{gridName},
|
||||
</if>
|
||||
<if test="gridSummary != null">
|
||||
grid_summary = #{gridSummary},
|
||||
</if>
|
||||
<if test="gridGroupId != null">
|
||||
grid_group_id = #{gridGroupId},
|
||||
</if>
|
||||
<if test="gridDuty != null">
|
||||
grid_duty = #{gridDuty},
|
||||
</if>
|
||||
<if test="gridSquare != null">
|
||||
grid_square = #{gridSquare},
|
||||
</if>
|
||||
<if test="fillColor != null and fillColor != ''">
|
||||
fill_color = #{fillColor},
|
||||
</if>
|
||||
@ -194,6 +212,11 @@
|
||||
AND
|
||||
grid_id = #{gridId}
|
||||
</if>
|
||||
<if test="keywords != null and keywords != ''">
|
||||
AND (
|
||||
grid_name LIKE CONCAT('%', #{keywords}, '%')
|
||||
)
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 网格列表 -->
|
||||
@ -208,7 +231,9 @@
|
||||
t1.grid_square,
|
||||
t1.area_code,
|
||||
t1.area_name,
|
||||
t1.fill_color
|
||||
t1.fill_color,
|
||||
LEFT(t1.gmt_create, 19) gmt_create,
|
||||
LEFT(t1.gmt_modified, 19) gmt_modified
|
||||
FROM
|
||||
map_grid t1
|
||||
WHERE
|
||||
@ -220,6 +245,10 @@
|
||||
#{gridIds[${index}]}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="areaCode != null and areaCode != ''">
|
||||
AND
|
||||
t1.area_code = #{areaCode}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- 网格列表(group) -->
|
||||
@ -245,4 +274,33 @@
|
||||
t1.grid_name
|
||||
</select>
|
||||
|
||||
<!-- 区域最后网格 -->
|
||||
<select id="getAreaLastPO" parameterType="map" resultMap="gridPO" useCache="false">
|
||||
SELECT
|
||||
grid_id,
|
||||
grid_name,
|
||||
grid_summary,
|
||||
grid_group_id,
|
||||
grid_duty,
|
||||
grid_code,
|
||||
grid_square,
|
||||
area_code,
|
||||
area_name,
|
||||
fill_color,
|
||||
gmt_create,
|
||||
creator,
|
||||
gmt_modified,
|
||||
modifier,
|
||||
is_delete
|
||||
FROM
|
||||
map_grid
|
||||
WHERE
|
||||
is_delete = 0
|
||||
AND
|
||||
area_code = #{areaCode}
|
||||
ORDER BY
|
||||
grid_code DESC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -15,8 +15,8 @@
|
||||
CREATE TABLE IF NOT EXISTS `map_grid_point` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`grid_id` char(36) DEFAULT NULL COMMENT '网格ID',
|
||||
`point_lng` varchar(255) DEFAULT NULL COMMENT '点经度',
|
||||
`point_lat` varchar(255) DEFAULT NULL COMMENT '点维度',
|
||||
`lng` varchar(255) DEFAULT NULL COMMENT '点经度',
|
||||
`lat` varchar(255) DEFAULT NULL COMMENT '点维度',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='网格点';
|
||||
</update>
|
||||
@ -25,12 +25,12 @@
|
||||
<insert id="save" parameterType="map" flushCache="true">
|
||||
INSERT INTO map_grid_point(
|
||||
grid_id,
|
||||
point_lng,
|
||||
point_lat
|
||||
lng,
|
||||
lat
|
||||
) VALUES(
|
||||
#{gridId},
|
||||
#{pointLng},
|
||||
#{pointLat}
|
||||
#{lng},
|
||||
#{lat}
|
||||
)
|
||||
</insert>
|
||||
|
||||
@ -54,8 +54,8 @@
|
||||
<select id="list" parameterType="map" resultMap="gridPointDTO" useCache="true">
|
||||
SELECT
|
||||
grid_id,
|
||||
point_lng,
|
||||
point_lat
|
||||
lng,
|
||||
lat
|
||||
FROM
|
||||
map_grid_point
|
||||
<where>
|
||||
|
@ -29,7 +29,7 @@
|
||||
gmt_create
|
||||
) VALUES(
|
||||
#{gridId},
|
||||
#{relationId}
|
||||
#{relationId},
|
||||
#{gmtCreate}
|
||||
)
|
||||
</insert>
|
||||
@ -53,6 +53,13 @@
|
||||
AND
|
||||
relation_id = #{relationId}
|
||||
</if>
|
||||
<if test="relationIds != null and relationIds.size > 0">
|
||||
AND
|
||||
relation_id IN
|
||||
<foreach collection="relationIds" index="index" open="(" separator="," close=")">
|
||||
#{relationIds[${index}]}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
</delete>
|
||||
|
||||
@ -60,7 +67,7 @@
|
||||
<select id="list" parameterType="map" resultMap="gridRelationDTO" useCache="true">
|
||||
SELECT
|
||||
relation_id,
|
||||
LEFT(gmt_create, 19) gmt_create
|
||||
LEFT(gmt_create, 19) gmt_create,
|
||||
grid_id
|
||||
FROM
|
||||
map_grid_relation
|
||||
|
@ -7,8 +7,6 @@ var mapConfig = {
|
||||
onGridStopEdit: function (gridArray) {
|
||||
}
|
||||
}
|
||||
// BMap
|
||||
// BMapGL
|
||||
|
||||
function BaiduMap(mapId, mapConfig) {
|
||||
this.map = new BMap.Map(mapId, {enableMapClick: false});
|
||||
@ -849,6 +847,10 @@ BaiduMap.prototype.initGridOptionEvent = function () {
|
||||
if (self.gridOption.editGrid.isEdit) {
|
||||
return;
|
||||
}
|
||||
// 判断是否只能绘制一个网格
|
||||
if(self.mapConfig.single && self.gridOption.gridArray.length > 0) {
|
||||
return;
|
||||
}
|
||||
// 隐藏结束编辑按钮
|
||||
self.hideStopOptionBtn();
|
||||
var point = new BMap.Point(event.point.lng, event.point.lat);
|
||||
|
147
module-map/src/main/resources/templates/grid/grid/get.html
Normal file
147
module-map/src/main/resources/templates/grid/grid/get.html
Normal file
@ -0,0 +1,147 @@
|
||||
<!doctype html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<style>
|
||||
.layui-form-label-up {width: 100% !important; height: 30px !important; line-height: 30px !important; border: none !important; padding: 0px !important; font-size: 15px; background-color: transparent !important; text-align: left !important;}
|
||||
.layui-input-block-down {margin: 0px !important; left: 0px !important;}
|
||||
.layui-input-block-down .layui-form-select .layui-edge {top: 74%;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div id="baiduMapContainer"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=mlfOah4gWM1FjEo9CmlI64zK6MhyiMPW"></script>
|
||||
<script type="text/javascript" src="static/baidu-map/baidu-map-1.0.0.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/' //静态资源所在路径
|
||||
}).extend({
|
||||
index: 'lib/index' //主入口模块
|
||||
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var laydate = layui.laydate;
|
||||
var queryParams = top.restAjax.params(window.location.href);
|
||||
var gridId = queryParams.gridId;
|
||||
var centerPoint = {
|
||||
lng: queryParams.cplng,
|
||||
lat: queryParams.cplat
|
||||
}
|
||||
|
||||
var baiduMap = null;
|
||||
var gridMember = {
|
||||
users: [],
|
||||
gridArray: []
|
||||
}
|
||||
|
||||
function closeBox() {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
}
|
||||
|
||||
// 初始化网格背景
|
||||
function initGridBG(areaCode, callback) {
|
||||
var layIndex;
|
||||
top.restAjax.get(top.restAjax.path('api/grid/list/except/{gridId}', [gridId]), {
|
||||
areaCode: areaCode
|
||||
}, null, function(code, data) {
|
||||
var gridArray = [];
|
||||
for(var i = 0, item; item = data[i++];) {
|
||||
var pointArray = [];
|
||||
for(var j = 0, jItem; jItem = item.pointArray[j++];) {
|
||||
pointArray.push(new BaiduMap.Point(jItem.lng, jItem.lat));
|
||||
}
|
||||
gridArray.push({
|
||||
id: item.gridId,
|
||||
label: item.gridName,
|
||||
fillColor: '#ffffff',
|
||||
pointArray: pointArray
|
||||
})
|
||||
}
|
||||
|
||||
baiduMap.initBackgroundGrid({
|
||||
gridArray: gridArray
|
||||
});
|
||||
|
||||
callback ? callback() : '';
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
|
||||
function initMap(callback) {
|
||||
$('#baiduMapContainer').css({
|
||||
width: '100%',
|
||||
height: ($win.height() - 30) +'px'
|
||||
});
|
||||
baiduMap = new BaiduMap('baiduMapContainer', {
|
||||
single: true,
|
||||
onGridStartEdit: function(baiduMap) {
|
||||
$('#confirmBtn').hide();
|
||||
},
|
||||
onGridStopEdit: function(gridArray) {
|
||||
gridMember.gridArray = gridArray;
|
||||
$('#confirmBtn').show();
|
||||
}
|
||||
});
|
||||
baiduMap.setCenterAndZoom(centerPoint, 14);
|
||||
var mapTypeControl = new BMap.MapTypeControl({
|
||||
mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP],
|
||||
});
|
||||
baiduMap.getMap().addControl(mapTypeControl);
|
||||
baiduMap.setDefaultConfig();
|
||||
baiduMap.initGridOptionEvent();
|
||||
baiduMap.initColorOption();
|
||||
callback ? callback() : '';
|
||||
}
|
||||
|
||||
// 初始化内容
|
||||
function initData() {
|
||||
top.restAjax.get(top.restAjax.path('api/grid/get/{gridId}', [gridId]), {}, null, function(code, data) {
|
||||
initMap(function() {
|
||||
// 背景层
|
||||
initGridBG(data.areaCode, function() {
|
||||
// 网格层
|
||||
var grid = new BaiduMap.Grid(data.gridId, data.pointArray);
|
||||
grid.setFillColor(data.fillColor);
|
||||
baiduMap.setGridArray([grid]);
|
||||
});
|
||||
});
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
|
||||
// 校验
|
||||
form.verify({
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
325
module-map/src/main/resources/templates/grid/grid/list.html
Normal file
325
module-map/src/main/resources/templates/grid/grid/list.html
Normal file
@ -0,0 +1,325 @@
|
||||
<!doctype html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid layui-anim layui-anim-fadein">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
|
||||
<div class="layui-inline">
|
||||
<input type="text" id="keywords" class="layui-input search-item search-item-width-100" placeholder="输入关键字">
|
||||
</div>
|
||||
<button type="button" id="search" class="layui-btn layui-btn-sm">
|
||||
<i class="fa fa-lg fa-search"></i> 搜索
|
||||
</button>
|
||||
</div>
|
||||
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
|
||||
<!-- 表头按钮组 -->
|
||||
<script type="text/html" id="headerToolBar">
|
||||
<div class="layui-btn-group">
|
||||
<button type="button" class="layui-btn layui-btn-sm" lay-event="saveEvent">
|
||||
<i class="fa fa-lg fa-plus"></i> 网格绘制
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-normal layui-btn-sm" lay-event="updateEvent">
|
||||
<i class="fa fa-lg fa-edit"></i> 网格修改
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" lay-event="removeEvent">
|
||||
<i class="fa fa-lg fa-trash"></i> 删除
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'table', 'laydate', 'common'], function() {
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var table = layui.table;
|
||||
var admin = layui.admin;
|
||||
var laydate = layui.laydate;
|
||||
var common = layui.common;
|
||||
var resizeTimeout = null;
|
||||
var tableUrl = 'api/grid/listpage';
|
||||
var queryParams = top.restAjax.params(window.location.href);
|
||||
var cplng = queryParams.cplng ? queryParams.cplng : 111.848937;
|
||||
var cplat = queryParams.cplat ? queryParams.cplat : 40.904095;
|
||||
|
||||
// 初始化表格
|
||||
function initTable() {
|
||||
table.render({
|
||||
elem: '#dataTable',
|
||||
id: 'dataTable',
|
||||
url: top.restAjax.path(tableUrl, []),
|
||||
width: admin.screen() > 1 ? '100%' : '',
|
||||
height: $win.height() - 90,
|
||||
limit: 20,
|
||||
limits: [20, 40, 60, 80, 100, 200],
|
||||
toolbar: '#headerToolBar',
|
||||
request: {
|
||||
pageName: 'page',
|
||||
limitName: 'rows'
|
||||
},
|
||||
cols: [
|
||||
[
|
||||
{type:'checkbox', fixed: 'left'},
|
||||
{field:'rowNum', width:80, title: '序号', fixed: 'left', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
|
||||
{field: 'gridName', width: 120, title: '网格名称', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'gridDuty', width: 120, title: '职责', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'gridSummary', width: 180, title: '描述', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'gridCode', width: 180, title: '网格编码', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'areaName', width: 180, title: '地区名称', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'areaCode', width: 180, title: '地区编码', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'gridSquare', width: 180, title: '单元网格面积', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData + ' ㎡';
|
||||
}
|
||||
},
|
||||
{field: 'gmtCreate', width: 180, title: '创建时间', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'gmtModified', width: 180, title: '修改时间', align:'center',
|
||||
templet: function(row) {
|
||||
var rowData = row[this.field];
|
||||
if(typeof(rowData) === 'undefined' || rowData == null || rowData == '') {
|
||||
return '-';
|
||||
}
|
||||
return rowData;
|
||||
}
|
||||
},
|
||||
{field: 'operation', width: 150, title: '操作', align:'center', fixed: 'right',
|
||||
templet: function(row) {
|
||||
return '<div class="layui-btn-group">' +
|
||||
'<button class="layui-btn layui-btn-xs" lay-event="gridEvent">查看网格</button>' +
|
||||
'<button class="layui-btn layui-btn-primary layui-btn-xs" lay-event="userEvent">网格人员</button>' +
|
||||
'</div>';
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
page: true,
|
||||
parseData: function(data) {
|
||||
return {
|
||||
'code': 0,
|
||||
'msg': '',
|
||||
'count': data.total,
|
||||
'data': data.rows
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
// 重载表格
|
||||
function reloadTable(currentPage) {
|
||||
table.reload('dataTable', {
|
||||
url: top.restAjax.path(tableUrl, []),
|
||||
where: {
|
||||
keywords: $('#keywords').val(),
|
||||
startTime: $('#startTime').val(),
|
||||
endTime: $('#endTime').val()
|
||||
},
|
||||
page: {
|
||||
curr: currentPage
|
||||
},
|
||||
height: $win.height() - 90,
|
||||
});
|
||||
}
|
||||
// 初始化日期
|
||||
function initDate() {
|
||||
// 日期选择
|
||||
laydate.render({
|
||||
elem: '#startTime',
|
||||
format: 'yyyy-MM-dd'
|
||||
});
|
||||
laydate.render({
|
||||
elem: '#endTime',
|
||||
format: 'yyyy-MM-dd'
|
||||
});
|
||||
}
|
||||
// 删除
|
||||
function removeData(ids) {
|
||||
top.dialog.msg(top.dataMessage.delete, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
shade: 0.3,
|
||||
yes: function (index) {
|
||||
top.dialog.close(index);
|
||||
var layIndex;
|
||||
top.restAjax.delete(top.restAjax.path('api/grid/remove/{ids}', [ids]), {}, null, function (code, data) {
|
||||
top.dialog.msg(top.dataMessage.deleteSuccess, {time: 1000});
|
||||
reloadTable();
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.deleting, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
initTable();
|
||||
initDate();
|
||||
// 事件 - 页面变化
|
||||
$win.on('resize', function() {
|
||||
clearTimeout(resizeTimeout);
|
||||
resizeTimeout = setTimeout(function() {
|
||||
reloadTable();
|
||||
}, 500);
|
||||
});
|
||||
// 事件 - 搜索
|
||||
$(document).on('click', '#search', function() {
|
||||
reloadTable(1);
|
||||
});
|
||||
// 事件 - 增删改
|
||||
table.on('toolbar(dataTable)', function(obj) {
|
||||
var layEvent = obj.event;
|
||||
var checkStatus = table.checkStatus('dataTable');
|
||||
var checkDatas = checkStatus.data;
|
||||
if(layEvent === 'saveEvent') {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
area: ['100%', '100%'],
|
||||
shadeClose: true,
|
||||
anim: 2,
|
||||
content: top.restAjax.path('route/grid/save?cplng={cplng}&cplat={cplat}', [cplng, cplat]),
|
||||
end: function() {
|
||||
reloadTable();
|
||||
}
|
||||
});
|
||||
} else if(layEvent === 'updateEvent') {
|
||||
if(checkDatas.length === 0) {
|
||||
top.dialog.msg(top.dataMessage.table.selectEdit);
|
||||
} else if(checkDatas.length > 1) {
|
||||
top.dialog.msg(top.dataMessage.table.selectOneEdit);
|
||||
} else {
|
||||
layer.open({
|
||||
type: 2,
|
||||
title: false,
|
||||
closeBtn: 0,
|
||||
area: ['100%', '100%'],
|
||||
shadeClose: true,
|
||||
anim: 2,
|
||||
content: top.restAjax.path('route/grid/update?gridId={gridId}&cplng={cplng}&cplat={cplat}', [checkDatas[0].gridId, cplng, cplat]),
|
||||
end: function () {
|
||||
reloadTable();
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if(layEvent === 'removeEvent') {
|
||||
if(checkDatas.length === 0) {
|
||||
top.dialog.msg(top.dataMessage.table.selectDelete);
|
||||
} else {
|
||||
var ids = '';
|
||||
for(var i = 0, item; item = checkDatas[i++];) {
|
||||
if(i > 1) {
|
||||
ids += '_';
|
||||
}
|
||||
ids += item['gridId'];
|
||||
}
|
||||
removeData(ids);
|
||||
}
|
||||
}
|
||||
});
|
||||
table.on('tool(dataTable)', function(obj) {
|
||||
var data = obj.data;
|
||||
var layEvent = obj.event;
|
||||
if(layEvent === 'gridEvent') {
|
||||
top.dialog.open({
|
||||
url: top.restAjax.path('route/grid/get?gridId={gridId}&cplng={cplng}&cplat={cplat}', [data.gridId, cplng, cplat]),
|
||||
title: '【'+ data.gridName +'】网格',
|
||||
width: '80%',
|
||||
height: '80%',
|
||||
onClose: function() {}
|
||||
});
|
||||
} else if(layEvent === 'userEvent') {
|
||||
top.dialog.open({
|
||||
url: top.restAjax.path('route/grid/user/list?gridId={gridId}', [data.gridId]),
|
||||
title: '【'+ data.gridName +'】网格的用户列表',
|
||||
width: '800px',
|
||||
height: '500px',
|
||||
onClose: function() {}
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
351
module-map/src/main/resources/templates/grid/grid/save.html
Normal file
351
module-map/src/main/resources/templates/grid/grid/save.html
Normal file
@ -0,0 +1,351 @@
|
||||
<!doctype html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<style>
|
||||
.layui-form-label-up {width: 100% !important; height: 30px !important; line-height: 30px !important; border: none !important; padding: 0px !important; font-size: 15px; background-color: transparent !important; text-align: left !important;}
|
||||
.layui-input-block-down {margin: 0px !important; left: 0px !important;}
|
||||
.layui-input-block-down .layui-form-select .layui-edge {top: 74%;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||||
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
|
||||
<a href="javascript:void(0);"><cite>新增内容</cite></a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="layui-card-body" style="padding: 15px; position: relative; overflow: hidden;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div id="formContainer" class="layui-col-xs2">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格组</label>
|
||||
<div class="layui-input-block layui-input-block-down layui-form" id="gridGroupIdTemplateBox" lay-filter="gridGroupIdTemplateBox"></div>
|
||||
<script id="gridGroupIdTemplate" type="text/html">
|
||||
<select id="gridGroupId" name="gridGroupId" lay-filter="gridGroupId">
|
||||
<option value="">选择网格组</option>
|
||||
{{# for(var i = 0, item; item = d[i++];) { }}
|
||||
<option value="{{item.gridGroupId}}">{{item.gridGroupName}}</option>
|
||||
{{# } }}
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格名称</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridName" name="gridName" class="layui-input" value="" placeholder="请输入网格名称" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格描述</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridSummary" name="gridSummary" class="layui-input" value="" placeholder="请输入网格描述" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格职责</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridDuty" name="gridDuty" class="layui-input" value="" placeholder="请输入网格职责" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">选择地区</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="hidden" id="areaCode" name="areaCode">
|
||||
<input type="text" id="areaName" name="areaName" class="layui-input" value="" placeholder="请选择地区" maxlength="255" readonly lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">添加人员</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="hidden" id="userIds" name="userIds">
|
||||
<input type="text" id="userNames" name="userNames" class="layui-input" value="" placeholder="选择人员" maxlength="255" readonly>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button id="confirmBtn" type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs10">
|
||||
<div id="baiduMapContainer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=mlfOah4gWM1FjEo9CmlI64zK6MhyiMPW"></script>
|
||||
<script type="text/javascript" src="static/baidu-map/baidu-map-1.0.0.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/' //静态资源所在路径
|
||||
}).extend({
|
||||
index: 'lib/index' //主入口模块
|
||||
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var laydate = layui.laydate;
|
||||
var queryParams = top.restAjax.params(window.location.href);
|
||||
var centerPoint = {
|
||||
lng: queryParams.cplng,
|
||||
lat: queryParams.cplat
|
||||
}
|
||||
|
||||
var baiduMap = null;
|
||||
var gridMember = {
|
||||
users: [],
|
||||
gridArray: []
|
||||
}
|
||||
|
||||
function closeBox() {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
}
|
||||
|
||||
function initSelectRadioCheckboxTemplate(templateId, templateBoxId, data, callback) {
|
||||
laytpl(document.getElementById(templateId).innerHTML).render(data, function(html) {
|
||||
document.getElementById(templateBoxId).innerHTML = html;
|
||||
});
|
||||
form.render('select', templateBoxId);
|
||||
if(callback) {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化网格组下拉选择
|
||||
function initGridGroupSelect(selectValue) {
|
||||
top.restAjax.get(top.restAjax.path('api/grid-group/list', []), {
|
||||
}, null, function(code, data, args) {
|
||||
initSelectRadioCheckboxTemplate('gridGroupIdTemplate', 'gridGroupIdTemplateBox', data, function() {
|
||||
var selectObj = {};
|
||||
selectObj['gridGroupId'] = selectValue;
|
||||
form.val('dataForm', selectObj);
|
||||
});
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
function initMap() {
|
||||
$('#formContainer').css({
|
||||
height: ($win.height() - 145) +'px',
|
||||
overflow: 'auto'
|
||||
})
|
||||
$('#baiduMapContainer').css({
|
||||
width: '100%',
|
||||
height: ($win.height() - 145) +'px'
|
||||
});
|
||||
baiduMap = new BaiduMap('baiduMapContainer', {
|
||||
single: true,
|
||||
onGridStartEdit: function(baiduMap) {
|
||||
if(!$('#areaCode').val()) {
|
||||
top.dialog.msg('请选择地区');
|
||||
return false;
|
||||
}
|
||||
$('#confirmBtn').hide();
|
||||
},
|
||||
onGridStopEdit: function(gridArray) {
|
||||
gridMember.gridArray = gridArray;
|
||||
$('#confirmBtn').show();
|
||||
}
|
||||
});
|
||||
baiduMap.setCenterAndZoom(centerPoint, 14);
|
||||
var mapTypeControl = new BMap.MapTypeControl({
|
||||
mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP],
|
||||
});
|
||||
baiduMap.getMap().addControl(mapTypeControl);
|
||||
baiduMap.setDefaultConfig();
|
||||
baiduMap.initGridOption();
|
||||
baiduMap.initGridOptionEvent();
|
||||
baiduMap.initColorOption();
|
||||
}
|
||||
|
||||
// 初始化内容
|
||||
function initData() {
|
||||
initGridGroupSelect();
|
||||
initMap();
|
||||
}
|
||||
initData();
|
||||
|
||||
// 初始化网格背景
|
||||
function initGridBG(areaCode) {
|
||||
baiduMap.clearMap();
|
||||
var layIndex;
|
||||
top.restAjax.get(top.restAjax.path('api/grid/list', []), {
|
||||
areaCode: areaCode
|
||||
}, null, function(code, data) {
|
||||
var gridArray = [];
|
||||
for(var i = 0, item; item = data[i++];) {
|
||||
var pointArray = [];
|
||||
for(var j = 0, jItem; jItem = item.pointArray[j++];) {
|
||||
pointArray.push(new BaiduMap.Point(jItem.lng, jItem.lat));
|
||||
}
|
||||
gridArray.push({
|
||||
id: item.gridId,
|
||||
label: item.gridName,
|
||||
fillColor: item.fillColor,
|
||||
pointArray: pointArray
|
||||
})
|
||||
}
|
||||
|
||||
baiduMap.initBackgroundGrid({
|
||||
gridArray: gridArray
|
||||
});
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化编辑网格
|
||||
function initEditGrid(areaCode, userIds) {
|
||||
baiduMap.clearMap();
|
||||
var layIndex;
|
||||
top.restAjax.get(top.restAjax.path('api/grid/list', []), {
|
||||
areaCode: areaCode,
|
||||
userIds: userIds ? userIds : ''
|
||||
}, null, function(code, data) {
|
||||
var grids = [];
|
||||
for(var i = 0, item; item = data[i++];) {
|
||||
grids.push(item.grid);
|
||||
}
|
||||
// 设置编辑网格
|
||||
baiduMap.setGridArray(grids);
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
|
||||
$('#areaName').on('click', function() {
|
||||
top.dialog.open({
|
||||
title: '选择地区',
|
||||
url: top.restAjax.path('route/area/get-select?areaName={areaName}', [encodeURI($('#areaName').val())]),
|
||||
width: '600px',
|
||||
height: '225px',
|
||||
onClose: function() {
|
||||
var selectedAreaArray = top.dialog.dialogData.selectedAreaArray;
|
||||
var areaCode = '';
|
||||
var areaName = '';
|
||||
if(selectedAreaArray.length > 0) {
|
||||
areaCode = selectedAreaArray[selectedAreaArray.length - 1].areaCode;
|
||||
for(var i = 0, item; item = selectedAreaArray[i++];) {
|
||||
if(areaName) {
|
||||
areaName += '/';
|
||||
}
|
||||
areaName += item.areaName;
|
||||
}
|
||||
initGridBG(areaCode);
|
||||
}
|
||||
$('#areaCode').val(areaCode);
|
||||
$('#areaName').val(areaName);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
$('#userNames').on('click', function() {
|
||||
top.dialog.dialogData.selectedUserIds = $('#userIds').val();
|
||||
top.dialog.open({
|
||||
url: top.restAjax.path('route/department/user/select-user', []),
|
||||
title: '选择用户',
|
||||
width: '500px',
|
||||
height: '500px',
|
||||
onClose: function() {
|
||||
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
|
||||
// 这里写处理逻辑
|
||||
var userIds = '';
|
||||
var userNames = '';
|
||||
if(selectedUsers && selectedUsers.length > 0) {
|
||||
var relationArray = [];
|
||||
for(var i = 0, item; item = selectedUsers[i++];) {
|
||||
if(userIds) {
|
||||
userIds += '_';
|
||||
}
|
||||
if(userNames) {
|
||||
userNames += ',';
|
||||
}
|
||||
userIds += item.userId;
|
||||
userNames += item.userName;
|
||||
relationArray.push(new BaiduMap.Relation(item.userId, item.userName));
|
||||
}
|
||||
gridMember.users = relationArray;
|
||||
}
|
||||
$('#userIds').val(userIds);
|
||||
$('#userNames').val(userNames);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// 提交表单
|
||||
form.on('submit(submitForm)', function(formData) {
|
||||
if(gridMember.gridArray.length == 0) {
|
||||
top.dialog.msg('请添加网格');
|
||||
return;
|
||||
}
|
||||
formData.field.grid = gridMember.gridArray[0];
|
||||
var relationIdArray = [];
|
||||
for(var i = 0, item; item = gridMember.users[i++];) {
|
||||
relationIdArray.push(item.id);
|
||||
}
|
||||
formData.field.grid.relationIdArray = relationIdArray;
|
||||
top.dialog.confirm(top.dataMessage.commit, function(index) {
|
||||
top.dialog.close(index);
|
||||
var loadLayerIndex;
|
||||
top.restAjax.post(top.restAjax.path('api/grid/save', []), formData.field, null, function(code, data) {
|
||||
var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
shade: 0.3,
|
||||
yes: function(index) {
|
||||
top.dialog.close(index);
|
||||
window.location.reload();
|
||||
},
|
||||
btn2: function() {
|
||||
closeBox();
|
||||
}
|
||||
});
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.close').on('click', function() {
|
||||
closeBox();
|
||||
});
|
||||
|
||||
// 校验
|
||||
form.verify({
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
305
module-map/src/main/resources/templates/grid/grid/update.html
Normal file
305
module-map/src/main/resources/templates/grid/grid/update.html
Normal file
@ -0,0 +1,305 @@
|
||||
<!doctype html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
<style>
|
||||
.layui-form-label-up {width: 100% !important; height: 30px !important; line-height: 30px !important; border: none !important; padding: 0px !important; font-size: 15px; background-color: transparent !important; text-align: left !important;}
|
||||
.layui-input-block-down {margin: 0px !important; left: 0px !important;}
|
||||
.layui-input-block-down .layui-form-select .layui-edge {top: 74%;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid layui-anim layui-anim-fadein">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-header">
|
||||
<span class="layui-breadcrumb" lay-filter="breadcrumb" style="visibility: visible;">
|
||||
<a class="close" href="javascript:void(0);">上级列表</a><span lay-separator="">/</span>
|
||||
<a href="javascript:void(0);"><cite>编辑内容</cite></a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="layui-card-body" style="padding: 15px;">
|
||||
<form class="layui-form layui-form-pane" lay-filter="dataForm">
|
||||
<div class="layui-row layui-col-space15">
|
||||
<div id="formContainer" class="layui-col-xs2">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格组</label>
|
||||
<div class="layui-input-block layui-input-block-down layui-form" id="gridGroupIdTemplateBox" lay-filter="gridGroupIdTemplateBox"></div>
|
||||
<script id="gridGroupIdTemplate" type="text/html">
|
||||
<select id="gridGroupId" name="gridGroupId" lay-filter="gridGroupId">
|
||||
<option value="">选择网格组</option>
|
||||
{{# for(var i = 0, item; item = d[i++];) { }}
|
||||
<option value="{{item.gridGroupId}}">{{item.gridGroupName}}</option>
|
||||
{{# } }}
|
||||
</select>
|
||||
</script>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格名称</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridName" name="gridName" class="layui-input" value="" placeholder="请输入网格名称" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格描述</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridSummary" name="gridSummary" class="layui-input" value="" placeholder="请输入网格描述" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label layui-form-label-up">网格职责</label>
|
||||
<div class="layui-input-block layui-input-block-down">
|
||||
<input type="text" id="gridDuty" name="gridDuty" class="layui-input" value="" placeholder="请输入网格职责" maxlength="255" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item layui-layout-admin">
|
||||
<div class="layui-input-block">
|
||||
<div class="layui-footer" style="left: 0;">
|
||||
<button id="confirmBtn" type="button" class="layui-btn" lay-submit lay-filter="submitForm">提交编辑</button>
|
||||
<button type="button" class="layui-btn layui-btn-primary close">返回上级</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-col-xs10">
|
||||
<div id="baiduMapContainer"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=mlfOah4gWM1FjEo9CmlI64zK6MhyiMPW"></script>
|
||||
<script type="text/javascript" src="static/baidu-map/baidu-map-1.0.0.min.js"></script>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/' //静态资源所在路径
|
||||
}).extend({
|
||||
index: 'lib/index' //主入口模块
|
||||
}).use(['index', 'form', 'laydate', 'laytpl'], function(){
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var form = layui.form;
|
||||
var laytpl = layui.laytpl;
|
||||
var laydate = layui.laydate;
|
||||
var queryParams = top.restAjax.params(window.location.href);
|
||||
var gridId = queryParams.gridId;
|
||||
var centerPoint = {
|
||||
lng: queryParams.cplng,
|
||||
lat: queryParams.cplat
|
||||
}
|
||||
|
||||
var baiduMap = null;
|
||||
var gridMember = {
|
||||
users: [],
|
||||
gridArray: []
|
||||
}
|
||||
|
||||
function closeBox() {
|
||||
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
||||
}
|
||||
|
||||
function initSelectRadioCheckboxTemplate(templateId, templateBoxId, data, callback) {
|
||||
laytpl(document.getElementById(templateId).innerHTML).render(data, function(html) {
|
||||
document.getElementById(templateBoxId).innerHTML = html;
|
||||
});
|
||||
form.render('select', templateBoxId);
|
||||
if(callback) {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化网格组下拉选择
|
||||
function initGridGroupSelect(selectValue) {
|
||||
top.restAjax.get(top.restAjax.path('api/grid-group/list', []), {
|
||||
}, null, function(code, data, args) {
|
||||
initSelectRadioCheckboxTemplate('gridGroupIdTemplate', 'gridGroupIdTemplateBox', data, function() {
|
||||
var selectObj = {};
|
||||
selectObj['gridGroupId'] = selectValue;
|
||||
form.val('dataForm', selectObj);
|
||||
});
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
});
|
||||
}
|
||||
|
||||
// 初始化网格背景
|
||||
function initGridBG(areaCode, callback) {
|
||||
var layIndex;
|
||||
top.restAjax.get(top.restAjax.path('api/grid/list/except/{gridId}', [gridId]), {
|
||||
areaCode: areaCode
|
||||
}, null, function(code, data) {
|
||||
var gridArray = [];
|
||||
for(var i = 0, item; item = data[i++];) {
|
||||
var pointArray = [];
|
||||
for(var j = 0, jItem; jItem = item.pointArray[j++];) {
|
||||
pointArray.push(new BaiduMap.Point(jItem.lng, jItem.lat));
|
||||
}
|
||||
gridArray.push({
|
||||
id: item.gridId,
|
||||
label: item.gridName,
|
||||
fillColor: '#ffffff',
|
||||
pointArray: pointArray
|
||||
})
|
||||
}
|
||||
|
||||
baiduMap.initBackgroundGrid({
|
||||
gridArray: gridArray
|
||||
});
|
||||
|
||||
callback ? callback() : '';
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
layIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function () {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
|
||||
function initMap(callback) {
|
||||
$('#formContainer').css({
|
||||
height: ($win.height() - 145) +'px',
|
||||
overflow: 'auto'
|
||||
})
|
||||
$('#baiduMapContainer').css({
|
||||
width: '100%',
|
||||
height: ($win.height() - 145) +'px'
|
||||
});
|
||||
baiduMap = new BaiduMap('baiduMapContainer', {
|
||||
single: true,
|
||||
onGridStartEdit: function(baiduMap) {
|
||||
$('#confirmBtn').hide();
|
||||
},
|
||||
onGridStopEdit: function(gridArray) {
|
||||
gridMember.gridArray = gridArray;
|
||||
$('#confirmBtn').show();
|
||||
}
|
||||
});
|
||||
baiduMap.setCenterAndZoom(centerPoint, 14);
|
||||
var mapTypeControl = new BMap.MapTypeControl({
|
||||
mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP],
|
||||
});
|
||||
baiduMap.getMap().addControl(mapTypeControl);
|
||||
baiduMap.setDefaultConfig();
|
||||
baiduMap.initGridOption();
|
||||
baiduMap.initGridOptionEvent();
|
||||
baiduMap.initColorOption();
|
||||
callback ? callback() : '';
|
||||
}
|
||||
|
||||
// 初始化内容
|
||||
function initData() {
|
||||
top.restAjax.get(top.restAjax.path('api/grid/get/{gridId}', [gridId]), {}, null, function(code, data) {
|
||||
var dataFormData = {};
|
||||
for(var i in data) {
|
||||
dataFormData[i] = data[i] +'';
|
||||
}
|
||||
form.val('dataForm', dataFormData);
|
||||
form.render(null, 'dataForm');
|
||||
|
||||
gridMember.gridArray = [{
|
||||
id: data.gridId,
|
||||
fillColor: data.fillColor,
|
||||
pointArray: data.pointArray
|
||||
}];
|
||||
|
||||
initGridGroupSelect(data.gridGroupId);
|
||||
|
||||
initMap(function() {
|
||||
// 背景层
|
||||
initGridBG(data.areaCode, function() {
|
||||
// 网格层
|
||||
var grid = new BaiduMap.Grid(data.gridId, data.pointArray);
|
||||
grid.setFillColor(data.fillColor);
|
||||
baiduMap.setGridArray([grid]);
|
||||
});
|
||||
});
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
}
|
||||
initData();
|
||||
|
||||
$('#areaName').on('click', function() {
|
||||
top.dialog.open({
|
||||
title: '选择地区',
|
||||
url: top.restAjax.path('route/area/get-select?areaName={areaName}', [encodeURI($('#areaName').val())]),
|
||||
width: '600px',
|
||||
height: '225px',
|
||||
onClose: function() {
|
||||
var selectedAreaArray = top.dialog.dialogData.selectedAreaArray;
|
||||
var areaCode = '';
|
||||
var areaName = '';
|
||||
if(selectedAreaArray.length > 0) {
|
||||
areaCode = selectedAreaArray[selectedAreaArray.length - 1].areaCode;
|
||||
for(var i = 0, item; item = selectedAreaArray[i++];) {
|
||||
if(areaName) {
|
||||
areaName += '/';
|
||||
}
|
||||
areaName += item.areaName;
|
||||
}
|
||||
initGridBG(areaCode);
|
||||
}
|
||||
$('#areaCode').val(areaCode);
|
||||
$('#areaName').val(areaName);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// 提交表单
|
||||
form.on('submit(submitForm)', function(formData) {
|
||||
if(gridMember.gridArray.length == 0) {
|
||||
top.dialog.msg('请添加网格');
|
||||
return;
|
||||
}
|
||||
formData.field.grid = gridMember.gridArray[0];
|
||||
top.dialog.confirm(top.dataMessage.commit, function(index) {
|
||||
top.dialog.close(index);
|
||||
var loadLayerIndex;
|
||||
top.restAjax.put(top.restAjax.path('api/grid/update/{gridId}', [gridId]), formData.field, null, function(code, data) {
|
||||
var layerIndex = top.dialog.msg(top.dataMessage.commitSuccess, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
shade: 0.3,
|
||||
yes: function(index) {
|
||||
top.dialog.close(index);
|
||||
window.location.reload();
|
||||
},
|
||||
btn2: function() {
|
||||
closeBox();
|
||||
}
|
||||
});
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.committing, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
});
|
||||
return false;
|
||||
});
|
||||
|
||||
$('.close').on('click', function() {
|
||||
closeBox();
|
||||
});
|
||||
|
||||
// 校验
|
||||
form.verify({
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
249
module-map/src/main/resources/templates/grid/grid/user/list.html
Normal file
249
module-map/src/main/resources/templates/grid/grid/user/list.html
Normal file
@ -0,0 +1,249 @@
|
||||
<!doctype html>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<base th:href="${#request.getContextPath() + '/'}">
|
||||
<meta charset="utf-8">
|
||||
<meta name="renderer" content="webkit">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||
<link rel="stylesheet" href="assets/fonts/font-awesome/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="assets/js/vendor/viewer/viewer.min.css">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/layui/css/layui.css" media="all">
|
||||
<link rel="stylesheet" href="assets/layuiadmin/style/admin.css" media="all">
|
||||
</head>
|
||||
<body>
|
||||
<div class="layui-fluid layui-anim layui-anim-fadein" style="padding: 0;">
|
||||
<div class="layui-row">
|
||||
<div class="layui-col-md12">
|
||||
<div class="layui-card">
|
||||
<div class="layui-card-body">
|
||||
<div class="test-table-reload-btn" style="margin-bottom: 10px;">
|
||||
<div class="layui-inline">
|
||||
<input type="text" id="keywords" class="layui-input search-item" placeholder="输入关键字">
|
||||
</div>
|
||||
<button type="button" id="search" class="layui-btn layui-btn-sm">
|
||||
<i class="fa fa-lg fa-search"></i> 搜索
|
||||
</button>
|
||||
</div>
|
||||
<table class="layui-hide" id="dataTable" lay-filter="dataTable"></table>
|
||||
<!-- 表头按钮组 -->
|
||||
<script type="text/html" id="headerToolBar">
|
||||
<div class="layui-btn-group">
|
||||
<button type="button" class="layui-btn layui-btn-sm" lay-event="saveEvent">
|
||||
<i class="fa fa-lg fa-plus"></i> 新增
|
||||
</button>
|
||||
<button type="button" class="layui-btn layui-btn-danger layui-btn-sm" lay-event="removeEvent">
|
||||
<i class="fa fa-lg fa-trash"></i> 删除
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<input id="selectedUserIds" type="hidden"/>
|
||||
<script src="assets/layuiadmin/layui/layui.js"></script>
|
||||
<script>
|
||||
layui.config({
|
||||
base: 'assets/layuiadmin/'
|
||||
}).extend({
|
||||
index: 'lib/index'
|
||||
}).use(['index', 'table', 'common'], function() {
|
||||
var $ = layui.$;
|
||||
var $win = $(window);
|
||||
var table = layui.table;
|
||||
var admin = layui.admin;
|
||||
var common = layui.common;
|
||||
var gridId = top.restAjax.params(window.location.href).gridId;
|
||||
var resizeTimeout = null;
|
||||
var tableUrl = 'api/grid/user/listpage/{gridId}';
|
||||
|
||||
// 初始化表格
|
||||
function initTable() {
|
||||
table.render({
|
||||
elem: '#dataTable',
|
||||
id: 'dataTable',
|
||||
url: top.restAjax.path(tableUrl, [gridId]),
|
||||
width: admin.screen() > 1 ? '100%' : '',
|
||||
height: $win.height() - 60,
|
||||
limit: 20,
|
||||
limits: [20, 40, 60, 80, 100, 200],
|
||||
toolbar: '#headerToolBar',
|
||||
request: {
|
||||
pageName: 'page',
|
||||
limitName: 'rows'
|
||||
},
|
||||
cols: [
|
||||
[
|
||||
{type:'checkbox', fixed: 'left'},
|
||||
{field:'rowNum', width:80, title: '序号', align:'center', templet: '<span>{{d.LAY_INDEX}}</span>'},
|
||||
{field:'userUsername', width:140, title: '用户名', align:'center'},
|
||||
{field:'userName', width:140, title: '昵称', align:'center'},
|
||||
{field:'userPhone', width:140, title: '手机', align:'center',
|
||||
templet: function(item) {
|
||||
if(!item.userPhone) {
|
||||
return '-';
|
||||
}
|
||||
return item.userPhone;
|
||||
}
|
||||
},
|
||||
{field:'gmtCreate', width:180, title: '添加时间', align:'center',
|
||||
templet: function(item) {
|
||||
if(!item.gmtCreate) {
|
||||
return '-';
|
||||
}
|
||||
return item.gmtCreate;
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
page: true,
|
||||
parseData: function(data) {
|
||||
return {
|
||||
'code': 0,
|
||||
'msg': '',
|
||||
'count': data.total,
|
||||
'data': data.rows
|
||||
};
|
||||
}
|
||||
});
|
||||
}
|
||||
// 重载表格
|
||||
function reloadTable(currentPage) {
|
||||
table.reload('dataTable', {
|
||||
url: top.restAjax.path(tableUrl, [gridId]),
|
||||
where: {
|
||||
keywords: $('#keywords').val(),
|
||||
},
|
||||
page: {
|
||||
curr: currentPage
|
||||
},
|
||||
height: $win.height() - 60,
|
||||
});
|
||||
}
|
||||
// 删除
|
||||
function removeData(ids) {
|
||||
top.dialog.msg(top.dataMessage.delete, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
shade: 0.3,
|
||||
yes: function(index) {
|
||||
top.dialog.close(index);
|
||||
var layIndex;
|
||||
top.restAjax.delete(top.restAjax.path('api/grid/user/delete/{gridId}/{ids}', [gridId, ids]), {}, null, function(code, data) {
|
||||
top.dialog.msg(top.dataMessage.deleteSuccess);
|
||||
var deleteUserIds = ids.split('_');
|
||||
var selectedUserIds = $('#selectedUserIds').val().split('_');
|
||||
var tempIds = common.resultIdsOfDeleteIds(deleteUserIds, selectedUserIds);
|
||||
$('#selectedUserIds').val(tempIds);
|
||||
reloadTable();
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
layIndex = top.dialog.msg(top.dataMessage.deleting, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
// 初始化职位用户ID列表
|
||||
function initSelectUserIds() {
|
||||
var layIndex;
|
||||
top.restAjax.get(top.restAjax.path('api/grid/user/list-user-id/{gridId}', [gridId]), {}, null, function(code, data) {
|
||||
var selectedUserIds = '';
|
||||
for(var i = 0, item; item = data[i++]; ) {
|
||||
if('' != selectedUserIds) {
|
||||
selectedUserIds += '_';
|
||||
}
|
||||
selectedUserIds += item;
|
||||
}
|
||||
$('#selectedUserIds').val(selectedUserIds);
|
||||
initTable();
|
||||
}, function(code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function() {
|
||||
layIndex = top.dialog.msg(top.dataMessage.loading, {icon: 16, time: 0, shade: 0.3});
|
||||
}, function() {
|
||||
top.dialog.close(layIndex);
|
||||
});
|
||||
}
|
||||
initSelectUserIds();
|
||||
|
||||
// 事件 - 页面变化
|
||||
$win.on('resize', function() {
|
||||
clearTimeout(resizeTimeout);
|
||||
resizeTimeout = setTimeout(function() {
|
||||
reloadTable();
|
||||
}, 500);
|
||||
});
|
||||
// 事件 - 搜索
|
||||
$(document).on('click', '#search', function() {
|
||||
reloadTable(1);
|
||||
});
|
||||
// 事件 - 增删
|
||||
table.on('toolbar(dataTable)', function(obj) {
|
||||
var layEvent = obj.event;
|
||||
var checkStatus = table.checkStatus('dataTable');
|
||||
var checkDatas = checkStatus.data;
|
||||
if(layEvent === 'saveEvent') {
|
||||
top.dialog.dialogData.selectedUserIds = $('#selectedUserIds').val();
|
||||
top.dialog.open({
|
||||
url: top.restAjax.path('route/department/user/select-user', []),
|
||||
title: '选择用户',
|
||||
width: '500px',
|
||||
height: '500px',
|
||||
onClose: function() {
|
||||
var selectedUsers = top.dialog.dialogData.selectedDepartmentUsers;
|
||||
if(selectedUsers != null && selectedUsers.length > 0) {
|
||||
var ids = [];
|
||||
for (var i = 0, item; item = selectedUsers[i++];) {
|
||||
ids.push(item.userId);
|
||||
}
|
||||
top.dialog.msg(top.dataMessage.update, {
|
||||
time: 0,
|
||||
btn: [top.dataMessage.button.yes, top.dataMessage.button.no],
|
||||
yes: function (index) {
|
||||
top.dialog.close(index);
|
||||
var loadLayerIndex;
|
||||
top.restAjax.put(top.restAjax.path('api/grid/user/update/{gridId}', [gridId]), {
|
||||
ids: ids
|
||||
}, null, function (code, data) {
|
||||
top.dialog.msg(top.dataMessage.updated);
|
||||
initSelectUserIds();
|
||||
}, function (code, data) {
|
||||
top.dialog.msg(data.msg);
|
||||
}, function () {
|
||||
loadLayerIndex = top.dialog.msg(top.dataMessage.updating, {
|
||||
icon: 16,
|
||||
time: 0,
|
||||
shade: 0.3
|
||||
});
|
||||
}, function () {
|
||||
top.dialog.close(loadLayerIndex);
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
} else if(layEvent === 'removeEvent') {
|
||||
if(checkDatas.length === 0) {
|
||||
top.dialog.msg(top.dataMessage.table.selectDelete);
|
||||
} else {
|
||||
var ids = '';
|
||||
for(var i = 0, item; item = checkDatas[i++];) {
|
||||
if(i > 1) {
|
||||
ids += '_';
|
||||
}
|
||||
ids += item.userId;
|
||||
}
|
||||
removeData(ids);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user