diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/controller/DictProjectController.java b/src/main/java/com/coscoshipping/ebtp/system/dict/controller/DictProjectController.java index f11bb50..52484d0 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/controller/DictProjectController.java +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/controller/DictProjectController.java @@ -37,7 +37,7 @@ public class DictProjectController{ @ApiOperation("插入新数据") @PostMapping("") public BaseResponse insert(@ApiParam(value = "对象数据", required = true) @RequestBody DictProject dictProject){ - boolean save = dictProjectService.saveOrUpdate(dictProject); + boolean save = dictProjectService.insertDictProject(dictProject); return BaseResponse.success(save); } @@ -80,29 +80,7 @@ public class DictProjectController{ @ApiOperation("查询数据集合") @GetMapping("/selectDictList") public BaseResponse> selectDictList(DictProject dictProject){ - List selectDictList = dictProjectService.selectDictList(dictProject); - Map dictProjectMap = selectDictList.stream() - .collect(Collectors.toMap( - DictProject::getCode, // 键:dictCode属性 - project -> project, // 值:DictProject对象本身 - (existing, replacement) -> existing // 处理键冲突策略:保留现有值 - )); - List rootDicts = new ArrayList<>(); - for (DictProject dict : selectDictList) { - String parentCode = dict.getParentCode(); - - // 根节点处理 - if ("/".equals(parentCode)) { - rootDicts.add(dict); - } else { - // 子节点处理 - DictProject parent = dictProjectMap.get(parentCode); - if (parent != null) { - parent.getChildren().add(dict); - } - } - } - return BaseResponse.success(rootDicts); + return BaseResponse.success(dictProjectService.selectDictTree(dictProject)); } /** diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/dao/DictProjectMapper.java b/src/main/java/com/coscoshipping/ebtp/system/dict/dao/DictProjectMapper.java index c3205a2..05645c3 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/dao/DictProjectMapper.java +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/dao/DictProjectMapper.java @@ -20,14 +20,6 @@ public interface DictProjectMapper extends IBaseMapper { return w; } - if (!StringUtils.isEmpty(dictProject.getDictTypeName())) { - w = w.and(i -> i.eq(DictProject::getDictTypeName, dictProject.getDictTypeName())); - } - - if (!StringUtils.isEmpty(dictProject.getDictTypeCode())) { - w = w.and(i -> i.eq(DictProject::getDictTypeCode, dictProject.getDictTypeCode())); - } - return w; } } diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/dao/mapper/DictProjectMapper.xml b/src/main/java/com/coscoshipping/ebtp/system/dict/dao/mapper/DictProjectMapper.xml index bdc4716..7ce7a49 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/dao/mapper/DictProjectMapper.xml +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/dao/mapper/DictProjectMapper.xml @@ -9,8 +9,6 @@ - - diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/entity/DictProject.java b/src/main/java/com/coscoshipping/ebtp/system/dict/entity/DictProject.java index 28f05d1..467f2ac 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/entity/DictProject.java +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/entity/DictProject.java @@ -46,18 +46,6 @@ public class DictProject implements Serializable { @ApiModelProperty(value = "字典名称") private String dicName; - /** - * 分组编码dictTypeCode - */ - @ApiModelProperty(value = "分组编码") - private String dictTypeCode; - - /** - * 分组名称dictTypeName - */ - @ApiModelProperty(value = "分组名称") - private String dictTypeName; - /** * 父类code */ diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/service/IDictProjectService.java b/src/main/java/com/coscoshipping/ebtp/system/dict/service/IDictProjectService.java index bb324e6..12304f5 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/service/IDictProjectService.java +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/service/IDictProjectService.java @@ -36,6 +36,13 @@ public interface IDictProjectService extends IBaseService{ */ List selectDictList(DictProject dictProject); + /** + * 查询所有字典(树形结构) + * @param dictProject + * @return + */ + List selectDictTree(DictProject dictProject); + /** * 查询字典数据 * @param parentCode 字典父类code @@ -44,4 +51,11 @@ public interface IDictProjectService extends IBaseService{ * @return 返回结果 */ DictProject getDict(String code, String parentCode, String toParentCode); + + /** + * 插入新数据 + * @param dictProject 字典对象 + * @return 是否成功 + */ + Boolean insertDictProject(DictProject dictProject); } diff --git a/src/main/java/com/coscoshipping/ebtp/system/dict/service/impl/DictProjectServiceImpl.java b/src/main/java/com/coscoshipping/ebtp/system/dict/service/impl/DictProjectServiceImpl.java index f47f226..9fb4700 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/dict/service/impl/DictProjectServiceImpl.java +++ b/src/main/java/com/coscoshipping/ebtp/system/dict/service/impl/DictProjectServiceImpl.java @@ -10,36 +10,39 @@ import com.coscoshipping.ebtp.system.dict.service.IDictProjectService; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 对数据表 dict_project 操作的 serviceImpl + * * @author daixc * @date 2020/11/03 */ @Service -public class DictProjectServiceImpl extends BaseServiceImpl implements IDictProjectService { +public class DictProjectServiceImpl extends BaseServiceImpl implements IDictProjectService { - - @Resource DictProjectMapper mapper; + @Resource + private DictProjectMapper mapper; private static final String COMMON_STR = "="; private static final String USE_FLAG_YES = "0"; + private static final String DICT_ROOT = "project"; + /** * 字典缓存查询数据 */ @Override - public Map> refreshDictCache(){ + public Map> refreshDictCache() { QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("use_flag",USE_FLAG_YES); - + queryWrapper.eq("use_flag", USE_FLAG_YES); queryWrapper.orderByAsc("id").orderByAsc("order_flag"); - List dictProjects = this.list(queryWrapper); + List dictProjects = this.list(queryWrapper); return dictProjects.stream().collect(Collectors.groupingBy(DictProject::getParentType)); } @@ -47,7 +50,8 @@ public class DictProjectServiceImpl extends BaseServiceImpl selectDictList(DictProject dictProject) { - return this.list(mapper.getCustomQueryWrapper(dictProject).orderByAsc(DictProject::getOrderFlag).orderByAsc(DictProject::getDictTypeCode)); + return this.list(mapper.getCustomQueryWrapper(dictProject).orderByAsc(DictProject::getOrderFlag)); } @Override public DictProject getDict(String code, String parentCode, String toParentCode) { DictProject dictProject = null; - List dictProjectList = getDictList(parentCode,toParentCode); - if(null != dictProjectList && !dictProjectList.isEmpty()){ + List dictProjectList = getDictList(parentCode, toParentCode); + if (null != dictProjectList && !dictProjectList.isEmpty()) { dictProject = dictProjectList.stream().filter(n -> n.getCode().equals(code)).collect(Collectors.toList()).get(0); } return dictProject; } + @Override + public List selectDictTree(DictProject dictProject) { + // 查询所有字典数据(可根据dictProject参数过滤) + List allList = this.selectDictList(dictProject); + // 构建code->DictProject映射 + Map dictMap = allList.stream() + .collect(Collectors.toMap( + DictProject::getCode, + project -> project, + (existing, replacement) -> existing + )); + // 组装树结构 + List rootList = new ArrayList<>(); + for (DictProject dict : allList) { + String parentCode = dict.getParentCode(); + if (DICT_ROOT.equals(parentCode)) { + // 根节点parent_code=project + rootList.add(dict); + } else { + DictProject parent = dictMap.get(parentCode); + if (parent != null) { + if (parent.getChildren() == null) { + parent.setChildren(new ArrayList<>()); + } + parent.getChildren().add(dict); + } + } + } + // 保证children字段始终存在 + for (DictProject dict : allList) { + if (dict.getChildren() == null) { + dict.setChildren(new ArrayList<>()); + } + } + return rootList; + } + + @Override + public Boolean insertDictProject(DictProject dictProject) { + if (dictProject.getId() == null && dictProject.getParentCode() == null) { + dictProject.setParentCode(DICT_ROOT); + dictProject.setParentType("-1=-2"); + } + return this.saveOrUpdate(dictProject); + } } diff --git a/src/main/java/com/coscoshipping/ebtp/system/menu/controller/SysMenuController.java b/src/main/java/com/coscoshipping/ebtp/system/menu/controller/SysMenuController.java index 0e8a32b..c3b1c70 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/menu/controller/SysMenuController.java +++ b/src/main/java/com/coscoshipping/ebtp/system/menu/controller/SysMenuController.java @@ -16,6 +16,9 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.ArrayList; +import com.coscoshipping.ebtp.system.menu.vo.MenuTreeVO; +import org.springframework.beans.BeanUtils; /** * 菜单信息 @@ -127,6 +130,14 @@ public class SysMenuController extends BaseController { return BaseResponse.success(tree); } + /** + * 获取所有菜单树形结构,供角色分配权限时选择 + */ + @GetMapping("/treeAll") + public BaseResponse> getAllMenuTree() { + return BaseResponse.success(menuService.getAllMenuTree()); + } + @GetMapping(value = "/expert/role/menu") public BaseResponse> getBaseRoleTabulation(@RequestParam("userId") String userId) { return BaseResponse.success(menuService.getBaseRoleTabulation(userId)); diff --git a/src/main/java/com/coscoshipping/ebtp/system/menu/service/ISysMenuService.java b/src/main/java/com/coscoshipping/ebtp/system/menu/service/ISysMenuService.java index 1602f80..47755e7 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/menu/service/ISysMenuService.java +++ b/src/main/java/com/coscoshipping/ebtp/system/menu/service/ISysMenuService.java @@ -7,6 +7,7 @@ import com.coscoshipping.ebtp.system.login.entity.EshopMenuQuery; import com.coscoshipping.ebtp.system.menu.dto.BaseRoleTabulation; import com.coscoshipping.ebtp.system.menu.entity.SysMenu; import com.coscoshipping.ebtp.system.menu.entity.TreeSelect; +import com.coscoshipping.ebtp.system.menu.vo.MenuTreeVO; import java.util.List; import java.util.Set; @@ -161,4 +162,10 @@ public interface ISysMenuService * @update [序号][日期YYYY-MM-DD] [更改人姓名][变更描述] */ List findMenuList(EshopMenuQuery body) throws BusinessException; + + /** + * 获取所有菜单的树形结构,供角色分配权限时选择 + * @return 菜单树结构 + */ + List getAllMenuTree(); } diff --git a/src/main/java/com/coscoshipping/ebtp/system/menu/service/impl/SysMenuServiceImpl.java b/src/main/java/com/coscoshipping/ebtp/system/menu/service/impl/SysMenuServiceImpl.java index 57e159d..98598dc 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/menu/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/coscoshipping/ebtp/system/menu/service/impl/SysMenuServiceImpl.java @@ -28,6 +28,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.stream.Collectors; import com.coscoshipping.ebtp.system.login.entity.EshopMenuConverterChildren; +import com.coscoshipping.ebtp.system.menu.vo.MenuTreeVO; /** * 菜单 业务层处理 @@ -450,4 +451,31 @@ public class SysMenuServiceImpl implements ISysMenuService { // 根节点的 children 字段已初始化为空 return rootMenus; } + + @Override + public List getAllMenuTree() { + List menus = selectMenuList(new SysMenu(), null); + List tree = buildMenuTree(menus); + List voList = new ArrayList<>(); + for (SysMenu menu : tree) { + voList.add(convertToMenuTreeVO(menu)); + } + return voList; + } + + private MenuTreeVO convertToMenuTreeVO(SysMenu menu) { + MenuTreeVO vo = new MenuTreeVO(); + vo.setId(menu.getMenuId()); + vo.setParentId(menu.getParentId()); + vo.setLabel(menu.getMenuName()); + vo.setWeight(menu.getMenuOrder()); + if (menu.getChildren() != null && !menu.getChildren().isEmpty()) { + List children = new ArrayList<>(); + for (SysMenu child : menu.getChildren()) { + children.add(convertToMenuTreeVO(child)); + } + vo.setChildren(children); + } + return vo; + } } diff --git a/src/main/java/com/coscoshipping/ebtp/system/org/dao/mapper/SysOrgMapper.xml b/src/main/java/com/coscoshipping/ebtp/system/org/dao/mapper/SysOrgMapper.xml index 7e076c5..ee7f1c5 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/org/dao/mapper/SysOrgMapper.xml +++ b/src/main/java/com/coscoshipping/ebtp/system/org/dao/mapper/SysOrgMapper.xml @@ -21,6 +21,7 @@ + @@ -47,7 +48,7 @@ org_id, org_name, org_num, org_full_id, org_full_name, up_org_id, org_category, leader_name, leader_oa_code, leader_user_id, top_leader_name, top_leader_oa_code, top_leader_user_id, sort, status, - branch, site, cu_company_number, create_by, create_date, tenant_id, + branch, site, cu_company_number, cu_company_name, create_by, create_date, tenant_id, tenant_name, update_by, update_date, delete_flag, last_update_time, 1 as level FROM sys_org @@ -60,7 +61,7 @@ o.org_id, o.org_name, o.org_num, o.org_full_id, o.org_full_name, o.up_org_id, o.org_category, o.leader_name, o.leader_oa_code, o.leader_user_id, o.top_leader_name, o.top_leader_oa_code, o.top_leader_user_id, o.sort, o.status, - o.branch, o.site, o.cu_company_number, o.create_by, o.create_date, o.tenant_id, + o.branch, o.site, o.cu_company_number, o.cu_company_name, o.create_by, o.create_date, o.tenant_id, o.tenant_name, o.update_by, o.update_date, o.delete_flag, o.last_update_time, ot.level + 1 FROM sys_org o @@ -70,7 +71,7 @@ org_id, org_name, org_num, org_full_id, org_full_name, up_org_id, org_category, leader_name, leader_oa_code, leader_user_id, top_leader_name, top_leader_oa_code, top_leader_user_id, sort, status, - branch, site, cu_company_number, create_by, create_date, tenant_id, + branch, site, cu_company_number, cu_company_name, create_by, create_date, tenant_id, tenant_name, update_by, update_date, delete_flag, last_update_time FROM org_tree ORDER BY sort ASC, org_name ASC diff --git a/src/main/java/com/coscoshipping/ebtp/system/org/entity/SysOrg.java b/src/main/java/com/coscoshipping/ebtp/system/org/entity/SysOrg.java index 8bfcccf..375a0e2 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/org/entity/SysOrg.java +++ b/src/main/java/com/coscoshipping/ebtp/system/org/entity/SysOrg.java @@ -76,10 +76,11 @@ public class SysOrg extends BaseEntity implements Serializable { @ApiModelProperty(value = "省份简称") private String site; - @ApiModelProperty(value = "所属分公司编码") + @ApiModelProperty(value = "所属公司编码") private String cuCompanyNumber; - + @ApiModelProperty(value = "所属公司名称") + private String cuCompanyName; @ApiModelProperty(value = "租户ID") private String tenantId; diff --git a/src/main/java/com/coscoshipping/ebtp/system/org/entity/vo/SysOrgVO.java b/src/main/java/com/coscoshipping/ebtp/system/org/entity/vo/SysOrgVO.java index db6d3c8..31b46e4 100644 --- a/src/main/java/com/coscoshipping/ebtp/system/org/entity/vo/SysOrgVO.java +++ b/src/main/java/com/coscoshipping/ebtp/system/org/entity/vo/SysOrgVO.java @@ -38,4 +38,7 @@ public class SysOrgVO extends SysOrg implements Serializable { @ApiModelProperty(value = "树形结构所有部门ID") private String allDepartmentId; + + @ApiModelProperty(value = "所属公司名称") + private String cuCompanyName; }