diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java index 7d2b8a63..6a2861b8 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/controller/api/AreaController.java @@ -2,15 +2,19 @@ package ink.wgink.module.dictionary.controller.api; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.exceptions.ParamsException; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.module.dictionary.pojo.dtos.AreaDTO; +import ink.wgink.module.dictionary.pojo.dtos.AreaZTreeDTO; import ink.wgink.module.dictionary.pojo.vos.AreaVO; import ink.wgink.module.dictionary.service.IAreaService; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.ZTreeDTO; +import ink.wgink.pojo.dtos.department.DepartmentDTO; 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.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -138,6 +142,22 @@ public class AreaController extends DefaultBaseController { return areaService.listZTree(params); } + @ApiOperation(value = "地区字典zTree列表", notes = "地区字典zTree列表接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "父ID", paramType = "query", dataType = "String") + }) + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @GetMapping("list-area-ztree") + public List listAreaZTree() { + Map params = requestParams(); + String parentId = "0"; + if (!StringUtils.isBlank(params.get(ISystemConstant.PARAMS_ID) == null ? null : params.get(ISystemConstant.PARAMS_ID).toString())) { + parentId = params.get(ISystemConstant.PARAMS_ID).toString(); + } + params.put("areaParentId", parentId); + return areaService.listAreaZTree(params); + } + @ApiOperation(value = "地区字典列表(通过地区字典编码)", notes = "地区字典列表(通过地区字典编码)接口") @ApiImplicitParams({ @ApiImplicitParam(name = "areaCode", value = "地区字典编码", paramType = "path") @@ -156,4 +176,24 @@ public class AreaController extends DefaultBaseController { return new SuccessResult(); } + @ApiOperation(value = "区域列表", notes = "区域列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("list/ids") + public List list(@RequestBody IdsVO idsVO) { + if (idsVO.getIds().isEmpty()) { + throw new ParamsException("id列表不能为空"); + } + return areaService.list(idsVO.getIds()); + } + + @ApiOperation(value = "区域列表", notes = "区域列表接口") + @ApiResponses({@ApiResponse(code = 400, message = "请求失败", response = ErrorResult.class)}) + @PostMapping("list/codes") + public List listByCodes(@RequestBody IdsVO idsVO) { + if (idsVO.getIds().isEmpty()) { + throw new ParamsException("id列表不能为空"); + } + return areaService.listByCodes(idsVO.getIds()); + } + } diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java index e372a08b..b76d68a7 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/dao/IAreaDao.java @@ -6,6 +6,7 @@ import ink.wgink.exceptions.SearchException; import ink.wgink.exceptions.UpdateException; import ink.wgink.interfaces.init.IInitBaseTable; import ink.wgink.module.dictionary.pojo.dtos.AreaDTO; +import ink.wgink.module.dictionary.pojo.dtos.AreaZTreeDTO; import ink.wgink.pojo.dtos.ZTreeDTO; import org.springframework.stereotype.Repository; @@ -108,6 +109,9 @@ public interface IAreaDao extends IInitBaseTable { */ List listZTree(Map params) throws SearchException; + List listAreaZTree(Map params); + + /** * 子列表个数 * diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/pojo/dtos/AreaZTreeDTO.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/pojo/dtos/AreaZTreeDTO.java new file mode 100644 index 00000000..583709ec --- /dev/null +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/pojo/dtos/AreaZTreeDTO.java @@ -0,0 +1,16 @@ +package ink.wgink.module.dictionary.pojo.dtos; + +import ink.wgink.pojo.dtos.ZTreeDTO; + +public class AreaZTreeDTO extends ZTreeDTO { + + private String areaCode; + + public String getAreaCode() { + return areaCode; + } + + public void setAreaCode(String areaCode) { + this.areaCode = areaCode; + } +} diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java index bf380110..ba9de200 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/IAreaService.java @@ -1,6 +1,7 @@ package ink.wgink.module.dictionary.service; import ink.wgink.module.dictionary.pojo.dtos.AreaDTO; +import ink.wgink.module.dictionary.pojo.dtos.AreaZTreeDTO; import ink.wgink.module.dictionary.pojo.vos.AreaVO; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.ZTreeDTO; @@ -87,6 +88,8 @@ public interface IAreaService { */ List list(); + List list(List areaIds); + /** * 通过上级ID获取地区字典列表 * @@ -119,6 +122,13 @@ public interface IAreaService { */ List listZTree(Map params); + /** + * + * @param params + * @return + */ + List listAreaZTree(Map params); + /** * 地区字典列表(通过地区字典编码) * @@ -148,4 +158,15 @@ public interface IAreaService { */ void updateShortAndMergerName(); + /** + * 路径区域列表 + * + * @param areaCode + * @return + */ + List listPathAreaByCode(String areaCode); + + List listPathArea(String areaId); + + } diff --git a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java index b1084d0b..28526623 100644 --- a/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java +++ b/module-dictionary/src/main/java/ink/wgink/module/dictionary/service/impl/AreaServiceImpl.java @@ -6,6 +6,7 @@ import ink.wgink.common.base.DefaultBaseService; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.module.dictionary.dao.IAreaDao; import ink.wgink.module.dictionary.pojo.dtos.AreaDTO; +import ink.wgink.module.dictionary.pojo.dtos.AreaZTreeDTO; import ink.wgink.module.dictionary.pojo.vos.AreaVO; import ink.wgink.module.dictionary.service.IAreaService; import ink.wgink.pojo.ListPage; @@ -102,6 +103,13 @@ public class AreaServiceImpl extends DefaultBaseService implements IAreaService return areaDao.list(params); } + @Override + public List list(List areaIds) { + Map params = getHashMap(0); + params.put("areaIds", areaIds); + return areaDao.list(params); + } + @Override public List listByParentId(String areaParentId) { Map params = getHashMap(1); @@ -136,6 +144,25 @@ public class AreaServiceImpl extends DefaultBaseService implements IAreaService return zTreeDTOs; } + @Override + public List listAreaZTree(Map params) { + List areaZTreeDTOS = areaDao.listAreaZTree(params); + for (AreaZTreeDTO areaZTreeDTO : areaZTreeDTOS) { + Integer subCount = areaDao.countByParentId(areaZTreeDTO.getId()); + setAreaZTreeInfo(areaZTreeDTO, subCount); + } + return areaZTreeDTOS; + } + + protected void setAreaZTreeInfo(AreaZTreeDTO areaZTreeDTO, Integer subCount) { + areaZTreeDTO.setUrl("javascript:void(0);"); + if (null != subCount && 0 < subCount) { + areaZTreeDTO.setIsParent(true); + } else { + areaZTreeDTO.setIsParent(false); + } + } + @Override public List listByCode(String areaCode) { Map params = getHashMap(1); @@ -176,6 +203,43 @@ public class AreaServiceImpl extends DefaultBaseService implements IAreaService } } + @Override + public List listPathAreaByCode(String areaCode) { + AreaDTO areaDTO = getByCode(areaCode); + return listPathArea(areaDTO); + } + + @Override + public List listPathArea(String areaId) { + AreaDTO areaDTO = get(areaId); + return listPathArea(areaDTO); + } + + private List listPathArea(AreaDTO areaDTO) { + if (areaDTO == null) { + return new ArrayList<>(); + } + List areaDTOS = new ArrayList<>(); + areaDTOS.add(0, areaDTO); + setPathArea(areaDTOS, areaDTO.getAreaParentId()); + return areaDTOS; + } + + /** + * 设置路径区域 + * + * @param areaDTOS + * @param areaId + */ + private void setPathArea(List areaDTOS, String areaId) { + AreaDTO areaDTO = get(areaId); + if (areaDTO == null) { + return; + } + areaDTOS.add(0, areaDTO); + setPathArea(areaDTOS, areaDTO.getAreaParentId()); + } + /** * 是否正在更新 * diff --git a/module-dictionary/src/main/resources/mybatis/mapper/area-mapper.xml b/module-dictionary/src/main/resources/mybatis/mapper/area-mapper.xml index 336f6fac..a712f106 100644 --- a/module-dictionary/src/main/resources/mybatis/mapper/area-mapper.xml +++ b/module-dictionary/src/main/resources/mybatis/mapper/area-mapper.xml @@ -20,13 +20,17 @@ - + + + + + CREATE TABLE IF NOT EXISTS `data_area` ( @@ -166,7 +170,21 @@ - + SELECT + * + FROM + data_area + WHERE + is_delete = 0 + + AND + area_parent_id = #{areaParentId} + + + + + + @@ -58,7 +76,14 @@ var newSelectedGridList = []; var tableData = []; - var tableUrl = 'api/grid/listpage/area-code/{areaCode}'; + var tableUrl = null; + if(areaCode) { + tableUrl = 'api/grid/listpage/area-code/{areaCode}'; + $('#selectArea').hide(); + } else { + tableUrl = 'api/grid/listpage'; + $('#selectArea').show(); + } // 初始化选择列表 function initNewSelectedGridList() { @@ -76,10 +101,10 @@ id: 'dataTable', url: top.restAjax.path(tableUrl, [areaCode]), width: admin.screen() > 1 ? '100%' : '', - height: $win.height() - 90, + height: $win.height() - 60, limit: 20, limits: [20, 40, 60, 80, 100, 200], - toolbar: '#headerToolBar', + toolbar: false, request: { pageName: 'page', limitName: 'rows' @@ -180,6 +205,7 @@ ], page: true, parseData: function(data) { + console.log(newSelectedGridList); for(var i = 0, item; item = data.rows[i++];) { if(!newSelectedGridList) { item.checked = false; @@ -215,13 +241,13 @@ url: top.restAjax.path(tableUrl, [areaCode]), where: { keywords: $('#keywords').val(), + areaCodeLike: $('#areaCode').val() ? $('#areaCode').val() : '', startTime: $('#startTime').val(), endTime: $('#endTime').val() }, page: { curr: currentPage }, - height: $win.height() - 90, }); } initTable(); @@ -289,6 +315,46 @@ } }); + $(document).on('click', '#showGrid', function() { + top.dialog.open({ + url: top.restAjax.path('route/grid/show-grid?areaCode={areaCode}', [areaCode ? areaCode : $('#areaCode').val()]), + title: '查看网格', + width: '80%', + height: '80%', + onClose: function() {} + }); + }); + + // 地区选择事件 + $(document).on('click', '#areaSelectBtn', function() { + top.dialog.open({ + title: '选择地区', + url: top.restAjax.path('route/area/get-select', []), + 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; + } + $('#areaCode').val(areaCode); + $('#areaName').val(areaName); + } + } + }) + }); + $(document).on('click', '#areaCleanBtn', function () { + $('#areaCode').val(''); + $('#areaName').val(''); + }) + table.on('radio(dataTable)', function(obj) { newSelectedGridList.splice(0, newSelectedGridList.length); addGridSelected(obj.data); diff --git a/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java b/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java index 5f49c981..9c1fa172 100644 --- a/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java +++ b/service-core/src/main/java/ink/wgink/service/core/controller/api/manage/CoreManageController.java @@ -2,6 +2,7 @@ package ink.wgink.service.core.controller.api.manage; import ink.wgink.annotation.CheckRequestBodyAnnotation; import ink.wgink.common.base.DefaultBaseController; +import ink.wgink.exceptions.ParamsException; import ink.wgink.interfaces.consts.ISystemConstant; import ink.wgink.pojo.ListPage; import ink.wgink.pojo.dtos.department.DepartmentDTO; @@ -40,6 +41,7 @@ public class CoreManageController extends DefaultBaseController { @PostMapping("save-user") @CheckRequestBodyAnnotation public SuccessResult saveUser(@RequestBody CoreManageUserVO coreManageUserVO) { + checkParams(coreManageUserVO); UserUtil.checkParams(coreManageUserVO); coreManageService.saveUser(coreManageUserVO); return new SuccessResult(); @@ -61,11 +63,18 @@ public class CoreManageController extends DefaultBaseController { @PutMapping("update-user/{userId}") @CheckRequestBodyAnnotation public SuccessResult updateUser(@PathVariable("userId") String userId, @RequestBody CoreManageUserVO coreManageUserVO) { + checkParams(coreManageUserVO); UserUtil.checkParams(coreManageUserVO); coreManageService.updateUser(userId, coreManageUserVO); return new SuccessResult(); } + private void checkParams(CoreManageUserVO coreManageUserVO) { + if (coreManageUserVO.getDepartmentIds() == null || coreManageUserVO.getDepartmentIds().isEmpty()) { + throw new ParamsException("组织部门不能为空"); + } + } + @ApiOperation(value = "用户详情", notes = "用户详情接口") @ApiImplicitParams({ @ApiImplicitParam(name = "userId", value = "用户ID", paramType = "path") diff --git a/service-core/src/main/java/ink/wgink/service/core/pojo/vos/manage/CoreManageUserVO.java b/service-core/src/main/java/ink/wgink/service/core/pojo/vos/manage/CoreManageUserVO.java index 4324b74d..d379b52e 100644 --- a/service-core/src/main/java/ink/wgink/service/core/pojo/vos/manage/CoreManageUserVO.java +++ b/service-core/src/main/java/ink/wgink/service/core/pojo/vos/manage/CoreManageUserVO.java @@ -19,7 +19,6 @@ import java.util.List; public class CoreManageUserVO extends UserVO { @ApiModelProperty(name = "departmentIds", value = "部门ID列表") - @CheckListAnnotation(name = "部门ID列表") private List departmentIds; @ApiModelProperty(name = "roleIds", value = "角色ID列表") private List roleIds; diff --git a/service-core/src/main/resources/templates/core/manage/list-department-user.html b/service-core/src/main/resources/templates/core/manage/list-department-user.html index ca4acd6e..5a710d20 100644 --- a/service-core/src/main/resources/templates/core/manage/list-department-user.html +++ b/service-core/src/main/resources/templates/core/manage/list-department-user.html @@ -636,7 +636,6 @@ form.on('checkbox(noDepartmentFilter)', function(data) { noDepartment = data.elem.checked; - console.log(1) }); form.on('checkbox(noRoleFilter)', function(data) {