OrganizationServiceImpl.java 8.7 KB

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