OrganizationServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  1. package com.goafanti.organization.service.impl;
  2. import java.util.*;
  3. import com.goafanti.common.dao.DepartmentMapper;
  4. import com.goafanti.common.dao.NewOrderChangeMapper;
  5. import com.goafanti.common.dao.TOrderNewMapper;
  6. import com.goafanti.common.model.Department;
  7. import com.goafanti.common.utils.AsyncUtils;
  8. import com.goafanti.organization.bo.DepOut;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.stereotype.Service;
  11. import com.goafanti.core.mybatis.page.Pagination;
  12. import com.goafanti.core.shiro.token.TokenManager;
  13. import com.goafanti.organization.bo.OrganizationListOut;
  14. import com.goafanti.organization.service.OrganizationService;
  15. import com.goafanti.admin.bo.AdminListBo;
  16. import com.goafanti.common.dao.TOrderMidMapper;
  17. import com.goafanti.common.utils.StringUtils;
  18. import com.goafanti.core.mybatis.BaseMybatisDao;
  19. @Service
  20. public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> implements OrganizationService {
  21. @Autowired
  22. private DepartmentMapper departmentMapper;
  23. @Autowired
  24. private TOrderMidMapper tOrderMidMapper;
  25. @Autowired
  26. private TOrderNewMapper tOrderNewMapper;
  27. @Autowired
  28. private NewOrderChangeMapper newOrderChangeMapper;
  29. @Autowired
  30. private AsyncUtils asyncUtils;
  31. @Override
  32. public Pagination<OrganizationListOut> listOrganizationManagement(OrganizationListOut olo, Integer pageNo,
  33. Integer pageSize) {
  34. /*olo.setCreateId(TokenManager.getAdminId());*/
  35. Map<String,Object> params =disposeParams(olo);
  36. @SuppressWarnings("unchecked")
  37. Pagination<OrganizationListOut> p=(Pagination<OrganizationListOut>)findPage("selectOrganizationList","selectOrganizationCount",params,pageNo,pageSize);
  38. return p;
  39. }
  40. private Map<String,Object> disposeParams(OrganizationListOut olo){
  41. Map<String,Object> params = new HashMap<String, Object>();
  42. if(StringUtils.isNotBlank(olo.getId())) params.put("id", olo.getId());
  43. if(StringUtils.isNotBlank(olo.getCreateId())) params.put("createId", olo.getCreateId());
  44. if(StringUtils.isNotBlank(olo.getCreateTime())) params.put("createTime", olo.getCreateTime());
  45. if(StringUtils.isNotBlank(olo.getUpdateTime())) params.put("updateTime", olo.getUpdateTime());
  46. if(StringUtils.isNotBlank(olo.getDeletedSign())) params.put("deletedSign", olo.getDeletedSign());
  47. if(StringUtils.isNotBlank(olo.getName())) params.put("name", olo.getName());
  48. if(StringUtils.isNotBlank(olo.getType())) params.put("type", olo.getType());
  49. if(StringUtils.isNotBlank(olo.getManagerId())) params.put("managerId", olo.getManagerId());
  50. if(StringUtils.isNotBlank(olo.getDepNo())) params.put("depNo", olo.getDepNo());
  51. if(StringUtils.isNotBlank(olo.getSuperId())) params.put("superId", olo.getSuperId());
  52. if(StringUtils.isNotBlank(olo.getRemarks())) params.put("remarks", olo.getRemarks());
  53. if(StringUtils.isNotBlank(olo.getStatus())) params.put("status", olo.getStatus());
  54. return params;
  55. }
  56. @Override
  57. public List<DepOut> selectSuperId(Integer hideSign) {
  58. if(hideSign==null){
  59. hideSign=1;
  60. }
  61. //此处理用于前端不批量改接口
  62. if (hideSign>1){
  63. hideSign=null;
  64. }
  65. List<DepOut> depList=departmentMapper.selectSuperId(hideSign,null,null);
  66. return depList;
  67. }
  68. @Override
  69. public List<DepOut> getAllDep(Integer hideSign) {
  70. if(hideSign==null){
  71. hideSign=1;
  72. }
  73. //此处理用于前端不批量改接口
  74. if (hideSign>1){
  75. hideSign=null;
  76. }
  77. List<DepOut> allDep=departmentMapper.selectSuperId(hideSign,null,null);
  78. List<DepOut> dep1=new ArrayList<>();
  79. Integer x=3;//设置顶级
  80. for (DepOut e : allDep) {
  81. if (e.getLvl()==x){
  82. e.setList(selectDepLvl(allDep,e.getId(),x+1));
  83. dep1.add(e);
  84. }
  85. }
  86. return dep1;
  87. }
  88. private List<DepOut> selectDepLvl(List<DepOut> allDep,String id, Integer i) {
  89. List<DepOut> newDep=new ArrayList<>();
  90. for (DepOut depOut : allDep) {
  91. if (depOut.getLvl()==i&&depOut.getSuperId().equals(id)){
  92. if (i<7)depOut.setList(selectDepLvl(allDep,depOut.getId(),i+1));
  93. newDep.add(depOut);
  94. }
  95. }
  96. return newDep;
  97. }
  98. /**
  99. * XXIn form 提交 ,bo包中
  100. * xxOut 输出 bo包中
  101. * domain 类 model中
  102. *
  103. */
  104. @Override
  105. public int addOrganization( String name, String managerId, String type, String superId, String remarks,
  106. Integer workingHoursType,Integer hideSign,String depNo) {
  107. Department superDep=departmentMapper.selectByPrimaryKey(superId);
  108. String id = UUID.randomUUID().toString();
  109. Date now = new Date();
  110. Department dep=new Department();
  111. dep.setId(id);
  112. String createId =departmentMapper.selectAdminNameById(TokenManager.getAdminId());
  113. dep.setCreateId(createId);
  114. dep.setCreateTime(now);
  115. dep.setUpdateTime(now);
  116. dep.setDeletedSign(0);
  117. dep.setName(name);
  118. dep.setLvl(superDep.getLvl()+1);
  119. dep.setType(type);
  120. dep.setManagerId(managerId);
  121. dep.setDepNo(depNo);
  122. // superId=departmentMapper.selectIdByName(superId);
  123. dep.setSuperId(superId);
  124. dep.setRemarks(remarks);
  125. dep.setStatus("0");
  126. dep.setHideSign(hideSign);
  127. dep.setWorkingHoursType(workingHoursType);
  128. departmentMapper.insertSelective(dep);
  129. return 1;
  130. }
  131. private String getMaxDep(Department superDep) {
  132. String sdepNo=superDep.getDepNo();
  133. Department maxDep=departmentMapper.selectByDepNo(superDep.getId());
  134. String depNo=new String();
  135. if (maxDep==null){
  136. depNo= sdepNo +"01";
  137. }else {
  138. String maxDepNo=maxDep.getDepNo();
  139. Integer countNo=Integer.valueOf(maxDepNo.substring(maxDepNo.length()-2));
  140. countNo++;
  141. if (countNo<10){
  142. depNo= sdepNo +"0"+countNo;
  143. }else {
  144. depNo= sdepNo +countNo;
  145. }
  146. }
  147. return depNo;
  148. }
  149. @Override
  150. public List<AdminListBo> selectName(String name) {
  151. List<AdminListBo> list=departmentMapper.selectName(name);
  152. return list;
  153. }
  154. @Override
  155. public OrganizationListOut selectAllById(String id) {
  156. OrganizationListOut olo=departmentMapper.selectAllById(id);
  157. olo.setSuperId(departmentMapper.selectNameById(olo.getSuperId()));
  158. return olo;
  159. }
  160. @Override
  161. public int deleteById(String id) {
  162. departmentMapper.deleteById(id);
  163. return 1;
  164. }
  165. @Override
  166. public int updateOrganization(String name, String type, String managerId, String superId, String status,Integer province,
  167. String remarks,String id,String abbreviation,String financeId,Integer workingHoursType,Integer hideSign,String depNo) {
  168. //获取上级编号
  169. Department superDep=departmentMapper.selectByPrimaryKey(superId);
  170. Date now=new Date();
  171. Department dep=new Department();
  172. dep.setLvl(superDep.getLvl()+1);
  173. dep.setName(name);
  174. dep.setType(type);
  175. dep.setUpdateTime(now);
  176. dep.setManagerId(managerId);
  177. dep.setStatus(status);
  178. dep.setRemarks(remarks);
  179. dep.setId(id);
  180. dep.setSuperId(superId);
  181. dep.setDepNo(depNo);
  182. dep.setAbbreviation(abbreviation);
  183. dep.setFinanceId(financeId);
  184. dep.setProvince(province);
  185. dep.setHideSign(hideSign);
  186. dep.setWorkingHoursType(workingHoursType);
  187. Department use = departmentMapper.selectByPrimaryKey(id);
  188. if (!use.getFinanceId().equals(financeId)){
  189. //切换后更换审核人
  190. asyncUtils.updateExamineName(id,financeId);
  191. }
  192. tOrderMidMapper.updateFinanceId(id,financeId);
  193. int x=departmentMapper.updateByPrimaryKeySelective(dep);
  194. return x;
  195. }
  196. @Override
  197. public boolean checkDepNo(String depNo,Integer type) {
  198. String useDepNo=departmentMapper.selectIdByDepNo(depNo);
  199. if (StringUtils.isNotBlank(useDepNo)){
  200. if (type==1){
  201. if (!depNo.equals(useDepNo)){
  202. return false;
  203. }else {
  204. return true;
  205. }
  206. }else {
  207. return true;
  208. }
  209. }
  210. return false;
  211. }
  212. private String countDepNo(String sdepNo, Integer count) {
  213. String dep=null;
  214. if(count<10){
  215. dep=sdepNo+"0"+count;
  216. String sid=departmentMapper.selectIdByDepNo(dep);
  217. while(sid!=null){
  218. count=(count+1)%100;
  219. if(count>=10){
  220. dep=sdepNo+count;
  221. }else{
  222. dep=sdepNo+"0"+count;
  223. }
  224. sid=departmentMapper.selectIdByDepNo(dep);
  225. }
  226. }else if(count>=10){
  227. dep=sdepNo+count;
  228. String sid=departmentMapper.selectIdByDepNo(dep);
  229. while(sid!=null){
  230. count=(count+1)%100;
  231. dep=sdepNo+count;
  232. sid=departmentMapper.selectIdByDepNo(dep);
  233. }
  234. }
  235. return dep;
  236. }
  237. private void updateLowerLevelNo(String id,String depNo,Integer lvl) {
  238. List<OrganizationListOut> Nos =departmentMapper.selectIDNBySuperId(id);
  239. int i=1;
  240. for (OrganizationListOut o : Nos) {
  241. o.setLvl(lvl+1);
  242. if(i<10){
  243. String dep=depNo+"0"+i;
  244. if(i>=10){
  245. dep=depNo+i;
  246. }else{
  247. dep=depNo+"0"+i;
  248. }
  249. o.setDepNo(dep);
  250. } else if(i>=10){
  251. String dep=depNo+i;
  252. dep=depNo+i;
  253. o.setDepNo(dep);
  254. }
  255. departmentMapper.updateByNumber(o);
  256. updateLowerLevelNo(o.getId(),o.getDepNo(),o.getLvl());
  257. i++;
  258. }
  259. }
  260. }