OrgServiceImpl.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. package com.huaxu.service.impl;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.huaxu.dao.OrgMapper;
  4. import com.huaxu.dto.OrgTree;
  5. import com.huaxu.entity.Org;
  6. import com.huaxu.model.LoginUser;
  7. import com.huaxu.model.ProgramItem;
  8. import com.huaxu.service.OrgService;
  9. import com.huaxu.util.UserUtil;
  10. import org.springframework.beans.BeanUtils;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.stereotype.Service;
  13. import java.util.*;
  14. import static com.google.common.collect.Lists.newArrayList;
  15. /**
  16. * 组织(Org表)服务实现类
  17. *
  18. * @author makejava
  19. * @since 2020-10-26 14:55:43
  20. */
  21. @Service("orgService")
  22. public class OrgServiceImpl implements OrgService {
  23. @Autowired
  24. private OrgMapper orgMapper;
  25. /**
  26. * 通过ID查询单条数据
  27. *
  28. * @param id 主键
  29. * @return 实例对象
  30. */
  31. @Override
  32. public Org selectById(Integer id) {
  33. return this.orgMapper.selectById(id);
  34. }
  35. /**
  36. * 查询所有
  37. *
  38. * @return 实例对象的集合
  39. */
  40. @Override
  41. public List<Org> selectAll() {
  42. return this.orgMapper.selectAll();
  43. }
  44. /**
  45. * 根据条件查询
  46. *
  47. * @return 实例对象的集合
  48. */
  49. @Override
  50. public List<Org> selectList(Org org) {
  51. return this.orgMapper.selectList(org);
  52. }
  53. /**
  54. * 新增数据
  55. *
  56. * @param org 实例对象
  57. * @return 实例对象
  58. */
  59. @Override
  60. public int insert(Org org) {
  61. LoginUser currentUser = UserUtil.getCurrentUser();
  62. org.setTenantId(currentUser.getTenantId());
  63. org.setCreateBy(currentUser.getUsername());
  64. org.setDateCreate(new Date());
  65. org.setStatus(1);
  66. if(org.getParentOrgId()==null){
  67. org.setParentOrgId(0);
  68. }
  69. return this.orgMapper.insert(org);
  70. }
  71. /**
  72. * 批量新增
  73. *
  74. * @param orgs 实例对象的集合
  75. * @return 生效的条数
  76. */
  77. @Override
  78. public int batchInsert(List<Org> orgs) {
  79. return this.orgMapper.batchInsert(orgs);
  80. }
  81. /**
  82. * 修改数据
  83. *
  84. * @param org 实例对象
  85. * @return 实例对象
  86. */
  87. @Override
  88. public int update(Org org) {
  89. Org orgType = orgMapper.findOrgType(org);
  90. if(!orgType.getOrgType().equals(org.getOrgType())){
  91. if(orgType.getChildType()!=null&&org.getOrgType().equals("department")
  92. &&orgType.getChildType().equals("company")){
  93. return -2;
  94. }else if(orgType.getParentType()!=null&&org.getOrgType().equals("company")&&
  95. orgType.getParentType().equals("department")){
  96. return -3;
  97. }
  98. }
  99. //删除前先查询机构下是否还有用户
  100. LoginUser currentUser = UserUtil.getCurrentUser();
  101. org.setUpdateBy(currentUser.getUsername());
  102. return this.orgMapper.update(org);
  103. }
  104. /**
  105. * 通过主键删除数据
  106. *
  107. * @param id 主键
  108. * @return 是否成功
  109. */
  110. @Override
  111. public int deleteById(Integer id) {
  112. return this.orgMapper.deleteById(id);
  113. }
  114. @Override
  115. public List<String> deleteAll(List<Integer> ids) {
  116. List<String>fail=new ArrayList<>();
  117. ids.forEach(id->{
  118. Org org=new Org();
  119. org.setId(id);
  120. Org orgUser = orgMapper.findOrgUser(org);
  121. if(orgUser==null){
  122. org.setStatus(0);
  123. orgMapper.update(org);
  124. }else {
  125. fail.add(orgUser.getOrgName());
  126. }
  127. });
  128. return fail;
  129. }
  130. /**
  131. * 查询总数据数
  132. *
  133. * @return 数据总数
  134. */
  135. @Override
  136. public int count() {
  137. return this.orgMapper.count();
  138. }
  139. /**
  140. * 分页查询
  141. *
  142. * @return 对象列表
  143. */
  144. @Override
  145. public IPage<Org> selectPage(Org org, IPage<Org> page) {
  146. LoginUser currentUser = UserUtil.getCurrentUser();
  147. org.setTenantId(currentUser.getTenantId());
  148. return this.orgMapper.selectPage(page, org);
  149. }
  150. @Override
  151. public List<OrgTree> getTrees(Org org) {
  152. LoginUser currentUser = UserUtil.getCurrentUser();
  153. org.setTenantId(currentUser.getTenantId());
  154. /* Set<Integer>orgIds=new HashSet<>();
  155. List<ProgramItem> programItemList = currentUser.getProgramItemList();
  156. if(programItemList!=null){
  157. programItemList.forEach(programItem -> {
  158. orgIds.add(programItem.getOrgId());
  159. });
  160. }*/
  161. List<OrgTree> trees=orgMapper.selectTrees(org);
  162. trees=getOrgTree(trees,0,1);
  163. return trees;
  164. }
  165. @Override
  166. public List<OrgTree> getUserTrees(Org org) {
  167. LoginUser currentUser = UserUtil.getCurrentUser();
  168. org.setTenantId(currentUser.getTenantId());
  169. /* Set<Integer>orgIds=new HashSet<>();
  170. List<ProgramItem> programItemList = currentUser.getProgramItemList();
  171. if(programItemList!=null){
  172. programItemList.forEach(programItem -> {
  173. orgIds.add(programItem.getOrgId());
  174. });
  175. }*/
  176. List<OrgTree> trees=new ArrayList<>();
  177. if("company".equals(org.getOrgType())){
  178. if(currentUser.getDepartmentId()==null){
  179. trees=orgMapper.selectTrees(org);
  180. trees=getOrgTreeByOrg(trees,currentUser.getCompanyId());
  181. }else{
  182. org.setId(currentUser.getCompanyId());
  183. trees=orgMapper.selectTrees(org);
  184. }
  185. }else{
  186. if(currentUser.getDepartmentId()!=null){
  187. org.setOrgType("department");
  188. trees=orgMapper.selectTrees(org);
  189. trees=getOrgTreeByOrg(trees,currentUser.getDepartmentId());
  190. }
  191. }
  192. return trees;
  193. }
  194. List<OrgTree> getOrgTreeByOrg(List<OrgTree> trees,int id){
  195. OrgTree fatherOrgTree=new OrgTree();
  196. for (OrgTree tree : trees) {
  197. if(tree.getId()==id){
  198. fatherOrgTree=tree;
  199. break;
  200. }
  201. }
  202. trees=getOrgTree(trees,id,1);
  203. fatherOrgTree.setOrgs(trees);
  204. List<OrgTree> result=new ArrayList<>();
  205. result.add(fatherOrgTree);
  206. trees=result;
  207. return trees;
  208. }
  209. public List<OrgTree> getOrgTree(List<OrgTree> list, Integer id, Integer level) {
  210. List<OrgTree> temList = newArrayList();
  211. if (list != null) {
  212. for (OrgTree orgTree : list) {
  213. if (id.equals(orgTree.getParentOrgId())) {
  214. //拥有权限可以显示
  215. /* if(!set.contains(id)){
  216. orgTree.setDisplay(true);
  217. }*/
  218. List<OrgTree> chidren = getOrgTree(list, orgTree.getId(), ++level);
  219. OrgTree temPermission = new OrgTree();
  220. BeanUtils.copyProperties(orgTree, temPermission);
  221. temPermission.setOrgs(chidren);
  222. temList.add(temPermission);
  223. level--;
  224. }
  225. }
  226. }
  227. if (temList.size() > 0) {
  228. return temList;
  229. } else {
  230. return null;
  231. }
  232. }
  233. }