AmbServiceImpl.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package com.goafanti.ambSystem.service.Impl;
  2. import com.goafanti.ambSystem.bo.AmbAll;
  3. import com.goafanti.ambSystem.bo.InputAmb;
  4. import com.goafanti.ambSystem.bo.OutAmb;
  5. import com.goafanti.ambSystem.service.AmbService;
  6. import com.goafanti.common.dao.*;
  7. import com.goafanti.common.error.BusinessException;
  8. import com.goafanti.common.model.Admin;
  9. import com.goafanti.common.model.AmbSystem;
  10. import com.goafanti.common.utils.StringUtils;
  11. import com.goafanti.core.mybatis.BaseMybatisDao;
  12. import com.goafanti.core.mybatis.page.Pagination;
  13. import com.goafanti.core.shiro.token.TokenManager;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.beans.factory.annotation.Value;
  16. import org.springframework.stereotype.Service;
  17. import java.util.*;
  18. @Service
  19. public class AmbServiceImpl extends BaseMybatisDao<AmbSystemMapper> implements AmbService {
  20. @Value(value = "${amb.maxLvl}")
  21. private Integer maxLvl=null;
  22. @Autowired
  23. private AmbSystemMapper ambSystemMapper;
  24. @Autowired
  25. private AdminMapper adminMapper;
  26. @Autowired
  27. private AmbInvestLogMapper ambInvestLogMapper;
  28. @Autowired
  29. private AmbInvestMapper ambInvestMapper;
  30. @Autowired
  31. private RoleMapper roleMapper;
  32. @Override
  33. public int addAmb(InputAmb in) {
  34. getParentParam(in);
  35. in.setStatus("0");
  36. in.setCreateBy(TokenManager.getAdminId());
  37. in.setCreateTime(new Date());
  38. ambSystemMapper.insertSelective(in);
  39. updateAmbRole(in.getLeader());
  40. return 1;
  41. }
  42. public void getParentParam(InputAmb in){
  43. AmbSystem parentAmb = ambSystemMapper.selectByPrimaryKey(in.getParentId());
  44. in.setLvl(parentAmb.getLvl()+1);
  45. if (in.getLvl()>maxLvl)throw new BusinessException(String.format("层级最多添加%s层,如需添加更多请联系管理员。",maxLvl));
  46. in.setAncestors(parentAmb.getAncestors()+","+parentAmb.getId());
  47. in.setAncestorsNames(getAncestorsNames(in.getAncestors()));
  48. }
  49. @Override
  50. public int updateAmb(InputAmb in) {
  51. AmbSystem use = ambSystemMapper.selectByPrimaryKey(in.getId());
  52. int i=0;
  53. //0为执行计算巴名称,1为已执行,无需再执行
  54. if (in.getParentId()!=null&&in.getParentId()!=use.getParentId()){
  55. getParentParam(in);
  56. i=updateAncestorsNames(in,use.getName(),i);
  57. }
  58. if (in.getName()!=null&&!in.getName().equals(use.getName())){
  59. i=updateAncestorsNames(in,use.getName(),i);
  60. }
  61. in.setUpdateBy(TokenManager.getAdminId());
  62. in.setUpdateTime(new Date());
  63. ambSystemMapper.updateByPrimaryKeySelective(in);
  64. if (!in.getLeader().equals(use.getLeader()))pushAdminAmbRole(in,use);
  65. return 1;
  66. }
  67. /**
  68. * 设置巴主巴角色
  69. * @param in
  70. */
  71. private void pushAdminAmbRole(InputAmb in,AmbSystem use) {
  72. //如果是修改,处理原负责人
  73. if (in.getId()!=null){
  74. if (use !=null &&use.getLeader()!=null){
  75. updateAmbRole(use.getLeader());
  76. }
  77. }
  78. updateAmbRole(in.getLeader());
  79. }
  80. /**
  81. *
  82. * @param leader
  83. */
  84. private void updateAmbRole(String leader) {
  85. StringBuffer str=new StringBuffer();
  86. List<AmbSystem> list=selectByLeader(leader);
  87. Admin a =new Admin();
  88. for (AmbSystem ambSystem : list) {
  89. if (ambSystem.getLvl()==5||ambSystem.getLvl()==6){
  90. a.setAmbManage(1);
  91. }
  92. str.append(ambSystem.getLvl()).append(",");
  93. }
  94. a.setId(leader);
  95. if (StringUtils.isNotBlank(str)) a.setAmbRole(str.substring(0,str.length()-1));
  96. adminMapper.updateByPrimaryKeySelective(a);
  97. }
  98. private List<AmbSystem> selectByLeader(String leader) {
  99. AmbSystem a =new AmbSystem();
  100. a.setLeader(leader);
  101. return ambSystemMapper.selectByParameter(a);
  102. }
  103. private List<AmbSystem> selectByParentId(Long parentId) {
  104. AmbSystem a =new AmbSystem();
  105. a.setParentId(parentId);
  106. return ambSystemMapper.selectByParameter(a);
  107. }
  108. private int updateAncestorsNames(InputAmb in,String useName,Integer i) {
  109. if (i>0)return i;
  110. return ambSystemMapper.updateAncestorsNames(in.getId(),in.getName(),useName);
  111. }
  112. @Override
  113. public Pagination<OutAmb> selectAmb(InputAmb in) {
  114. HashMap<String, Object> param = new HashMap<>();
  115. param.put("name",in.getName());
  116. param.put("lvl",in.getLvl());
  117. param.put("leader",in.getLeader());
  118. param.put("ancestors",in.getAncestors());
  119. return (Pagination<OutAmb>) findPage("selectAmbSystemList","selectAmbSystemCount",param,in.getPageNo(),in.getPageSize());
  120. }
  121. @Override
  122. public List<?> selectAll() {
  123. List<AmbAll> list = ambSystemMapper.getAncestorsList(null);
  124. List<AmbAll> all=new ArrayList<>();
  125. for (AmbAll a : list) {
  126. if (a.getLvl()==0){
  127. pushLvl(a,list);
  128. all.add(a);
  129. }
  130. }
  131. return all;
  132. }
  133. @Override
  134. public int deleteAmb(InputAmb in) {
  135. return ambSystemMapper.deleteByPrimaryKey(in.getId());
  136. }
  137. @Override
  138. public int checkAmb(InputAmb in,Integer type) {
  139. if (type==0){
  140. int i = ambSystemMapper.selectByName(in.getName());
  141. if (i>0)return -1;
  142. }else if (type==2){
  143. List<AmbSystem> ambSystems = selectByParentId(in.getId());
  144. if (!ambSystems.isEmpty())return -1;
  145. }
  146. return 0;
  147. }
  148. @Override
  149. public Object detailsAmb(InputAmb in) {
  150. return ambSystemMapper.selectDtailsAmb(in.getId());
  151. }
  152. private void pushLvl(AmbAll a , List<AmbAll> list) {
  153. if (a.getLvl()<7){
  154. List<AmbAll> all=new ArrayList<>();
  155. for (AmbAll as : list) {
  156. if (as.getParentId().equals(a.getId())){
  157. pushLvl(as,list);
  158. all.add(as);
  159. }
  160. }
  161. a.setList(all);
  162. }
  163. }
  164. private String getAncestorsNames(String ancestors) {
  165. String[] split = ancestors.split(",");
  166. List<String> list = Arrays.asList(split);
  167. List<AmbAll> ancestorsList = ambSystemMapper.getAncestorsList(list);
  168. StringBuffer sb=new StringBuffer();
  169. for (AmbAll ambSystem : ancestorsList) {
  170. for (String s : list) {
  171. //第一层无需装配
  172. if (!ambSystem.getId().toString().equals("1")){
  173. if (ambSystem.getId().toString().equals(s)){
  174. sb=sb.append(ambSystem.getName()).append(",");
  175. break;
  176. }
  177. }
  178. }
  179. }
  180. String str="";
  181. if (sb.length()>1)str=sb.substring(0,sb.length()-1);
  182. return str;
  183. }
  184. @Override
  185. public Object getMyambDtails() {
  186. List<AmbSystem> ambSystems = ambSystemMapper.selectByParameter(new AmbSystem(TokenManager.getAdminId()));
  187. return ambSystems;
  188. }
  189. }