OrgServiceImpl.java 8.3 KB

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