SysOrgController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.xunmei.system.controller;
  2. import cn.hutool.core.util.NumberUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.xunmei.common.core.domain.R;
  6. import com.xunmei.common.core.vo.IdNameVo;
  7. import com.xunmei.common.core.web.controller.BaseController;
  8. import com.xunmei.common.core.web.domain.AjaxResult;
  9. import com.xunmei.common.core.web.page.TableDataInfo;
  10. import com.xunmei.common.log.annotation.Log;
  11. import com.xunmei.common.log.enums.BusinessType;
  12. import com.xunmei.common.security.annotation.InnerAuth;
  13. import com.xunmei.common.security.annotation.RequiresPermissions;
  14. import com.xunmei.system.api.domain.SysOrg;
  15. import com.xunmei.system.mapper.SysOrgMapper;
  16. import com.xunmei.system.service.ISysOrgService;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.*;
  21. import java.util.ArrayList;
  22. import java.util.Arrays;
  23. import java.util.List;
  24. import java.util.stream.Collectors;
  25. /**
  26. * 【机构管理】Controller
  27. *
  28. * @author xunmei
  29. * @date 2023-08-10
  30. */
  31. @Api(tags = {"SysOrg"})
  32. @RestController
  33. @RequestMapping("/org")
  34. public class SysOrgController extends BaseController {
  35. @Autowired
  36. private ISysOrgService sysOrgService;
  37. @Autowired
  38. private SysOrgMapper sysOrgMapper;
  39. /**
  40. * 查询【机构管理】列表
  41. */
  42. @ApiOperation(value = "查询SysOrg列表")
  43. @RequiresPermissions("system:org:list")
  44. @GetMapping("/list")
  45. public TableDataInfo<SysOrg> list(SysOrg sysOrg) {
  46. return sysOrgService.selectPage(sysOrg);
  47. }
  48. /**
  49. * 获取【机构管理】详细信息
  50. */
  51. @ApiOperation(value = "获取SysOrg详细信息")
  52. @RequiresPermissions("system:org:query")
  53. @GetMapping(value = "/{id}")
  54. public AjaxResult getInfo(@PathVariable("id") Long id) {
  55. return success(sysOrgService.selectSysOrgById(id));
  56. }
  57. /**
  58. * 新增【机构管理】
  59. */
  60. @ApiOperation(value = "新增SysOrg")
  61. @RequiresPermissions("system:org:add")
  62. @Log(title = "【机构管理】", businessType = BusinessType.INSERT)
  63. @PostMapping
  64. public AjaxResult add(@RequestBody SysOrg sysOrg) {
  65. return toAjax(sysOrgService.insertSysOrg(sysOrg));
  66. }
  67. /**
  68. * 修改【机构管理】
  69. */
  70. @ApiOperation(value = "修改SysOrg")
  71. @RequiresPermissions("system:org:edit")
  72. @Log(title = "【机构管理】", businessType = BusinessType.UPDATE)
  73. @PutMapping
  74. public AjaxResult edit(@RequestBody SysOrg sysOrg) {
  75. return toAjax(sysOrgService.updateSysOrg(sysOrg));
  76. }
  77. /**
  78. * 删除【机构管理】
  79. */
  80. @ApiOperation(value = "删除SysOrg")
  81. @RequiresPermissions("system:org:remove")
  82. @Log(title = "【机构管理】", businessType = BusinessType.DELETE)
  83. @DeleteMapping("/{ids}")
  84. public AjaxResult remove(@PathVariable Long[] ids) {
  85. return toAjax(sysOrgService.deleteSysOrgByIds(ids));
  86. }
  87. /**
  88. * 查询机构列表
  89. */
  90. @ApiOperation(value = "查询SysOrg列表")
  91. @InnerAuth
  92. @GetMapping("/list/nopage")
  93. public R<List<SysOrg>> listNotPage(SysOrg sysOrg) {
  94. return R.ok(sysOrgService.selectSysOrgList(sysOrg));
  95. }
  96. @ApiOperation(value = "查询SysOrg列表")
  97. @InnerAuth
  98. @GetMapping("/list/findAllOrg")
  99. public List<SysOrg> findAllOrg() {
  100. return sysOrgService.list();
  101. }
  102. /**
  103. * 查询机构列表
  104. */
  105. @ApiOperation(value = "批量保存同步机构数据")
  106. @InnerAuth
  107. @PostMapping("/sync/batch")
  108. public R<Boolean> batchSaveSyncSysOrgs(@RequestBody List<SysOrg> sysOrgList) {
  109. //异步
  110. sysOrgService.batchSaveOrUpdate(sysOrgList);
  111. return R.ok(true);
  112. }
  113. /**
  114. * 查询机构列表
  115. */
  116. @ApiOperation(value = "获取单个机构信息")
  117. @InnerAuth
  118. @GetMapping("/{orgId}")
  119. public SysOrg selectSysOrgById(@PathVariable("orgId") Long orgId) {
  120. return sysOrgService.getById(orgId);
  121. }
  122. /**
  123. * 通过父类查询子集合
  124. */
  125. @ApiOperation(value = "通过父类查询子集合")
  126. @InnerAuth
  127. @GetMapping("/selectSysOrgByParentId")
  128. public List<SysOrg> selectSysOrgByParentId(Long id) {
  129. QueryWrapper queryWrapper = new QueryWrapper();
  130. queryWrapper.eq("parent_id", id);
  131. return sysOrgMapper.selectList(queryWrapper);
  132. }
  133. @ApiOperation(value = "通过当前用户所在机构id查询机构列表")
  134. @InnerAuth
  135. @GetMapping("/selectOrgTreeListByCurOrgId")
  136. public List<SysOrg> selectOrgTreeListByCurOrgId(Long id) {
  137. return sysOrgService.selectOrgTreeListByCurOrgId(id);
  138. }
  139. /**
  140. * 获取机构及其上级机构的id列表
  141. *
  142. * @param orgId
  143. * @return
  144. */
  145. @GetMapping("/getUpOrgs/{orgId}")
  146. public List<Long> getUpOrgs(@PathVariable("orgId") Long orgId) {
  147. SysOrg org=sysOrgMapper.selectById(orgId);
  148. if(ObjectUtil.isNull(org)){
  149. return null;
  150. }
  151. String path = org.getPath();
  152. if (ObjectUtil.isEmpty(path)) {
  153. return new ArrayList<>();
  154. }
  155. List<Long> list = Arrays.stream(path.split("-"))
  156. .filter(p -> NumberUtil.isLong(p))
  157. .map(p -> NumberUtil.parseLong(p))
  158. .collect(Collectors.toList());
  159. return list;
  160. }
  161. /**
  162. * 获取机构及父级机构的名称
  163. *
  164. * @param ids
  165. * @return
  166. */
  167. @PostMapping("/getParentNames")
  168. @InnerAuth
  169. public R<List<IdNameVo>> getParentName(@RequestBody List<Long> ids) {
  170. return R.ok(sysOrgMapper.getParentName(ids));
  171. }
  172. }