OrganizationServiceImpl.java 8.9 KB

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