OrganizationServiceImpl.java 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525
  1. package com.goafanti.organization.service.impl;
  2. import com.goafanti.admin.bo.AdminListBo;
  3. import com.goafanti.common.constant.AFTConstants;
  4. import com.goafanti.common.dao.*;
  5. import com.goafanti.common.enums.OrderLogProcess;
  6. import com.goafanti.common.model.*;
  7. import com.goafanti.common.utils.AsyncUtils;
  8. import com.goafanti.common.utils.StringUtils;
  9. import com.goafanti.core.mybatis.BaseMybatisDao;
  10. import com.goafanti.core.mybatis.page.Pagination;
  11. import com.goafanti.core.shiro.token.TokenManager;
  12. import com.goafanti.order.bo.TOrderNewBo;
  13. import com.goafanti.order.enums.ApprovalNewState;
  14. import com.goafanti.order.enums.OrderChangeProcess;
  15. import com.goafanti.order.enums.ProcessStatus;
  16. import com.goafanti.organization.bo.DepOut;
  17. import com.goafanti.organization.bo.InputDep;
  18. import com.goafanti.organization.bo.OrganizationListOut;
  19. import com.goafanti.organization.service.OrganizationService;
  20. import net.sourceforge.pinyin4j.PinyinHelper;
  21. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  22. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import java.util.*;
  26. import java.util.stream.Collectors;
  27. @Service
  28. public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> implements OrganizationService {
  29. @Autowired
  30. private DepartmentMapper departmentMapper;
  31. @Autowired
  32. private ExpenseConfigDetailsMapper expenseConfigDetailsMapper;
  33. @Autowired
  34. private TOrderNewMapper torderNewMapper;
  35. @Autowired
  36. private TOrderMidMapper torderMidMapper;
  37. @Autowired
  38. private TOrderExamineMapper torderExamineMapper;
  39. @Autowired
  40. private TOrderLogMapper tOrderLogMapper;
  41. @Autowired
  42. private AdminMapper adminMapper;
  43. @Autowired
  44. private NewOrderChangeMapper newOrderChangeMapper;
  45. @Autowired
  46. private AsyncUtils asyncUtils;
  47. @Override
  48. public Pagination<OrganizationListOut> listOrganizationManagement(OrganizationListOut olo, Integer pageNo,
  49. Integer pageSize) {
  50. /*olo.setCreateId(TokenManager.getAdminId());*/
  51. Map<String,Object> params =disposeParams(olo);
  52. @SuppressWarnings("unchecked")
  53. Pagination<OrganizationListOut> p=(Pagination<OrganizationListOut>)findPage("selectOrganizationList","selectOrganizationCount",params,pageNo,pageSize);
  54. return p;
  55. }
  56. private Map<String,Object> disposeParams(OrganizationListOut olo){
  57. Map<String,Object> params = new HashMap<String, Object>();
  58. if(StringUtils.isNotBlank(olo.getId())) params.put("id", olo.getId());
  59. if(StringUtils.isNotBlank(olo.getCreateId())) params.put("createId", olo.getCreateId());
  60. if(StringUtils.isNotBlank(olo.getCreateTime())) params.put("createTime", olo.getCreateTime());
  61. if(StringUtils.isNotBlank(olo.getUpdateTime())) params.put("updateTime", olo.getUpdateTime());
  62. if(StringUtils.isNotBlank(olo.getDeletedSign())) params.put("deletedSign", olo.getDeletedSign());
  63. if(StringUtils.isNotBlank(olo.getName())) params.put("name", olo.getName());
  64. if(StringUtils.isNotBlank(olo.getType())) params.put("type", olo.getType());
  65. if(StringUtils.isNotBlank(olo.getManagerId())) params.put("managerId", olo.getManagerId());
  66. if(StringUtils.isNotBlank(olo.getDepNo())) params.put("depNo", olo.getDepNo());
  67. if(StringUtils.isNotBlank(olo.getSuperId())) params.put("superId", olo.getSuperId());
  68. if(StringUtils.isNotBlank(olo.getRemarks())) params.put("remarks", olo.getRemarks());
  69. if(StringUtils.isNotBlank(olo.getStatus())) params.put("status", olo.getStatus());
  70. return params;
  71. }
  72. @Override
  73. public List<DepOut> selectSuperId(Integer hideSign) {
  74. if(hideSign==null){
  75. hideSign=1;
  76. }
  77. //此处理用于前端不批量改接口
  78. if (hideSign>1){
  79. hideSign=null;
  80. }
  81. List<DepOut> depList=departmentMapper.selectSuperId(hideSign,null,null);
  82. return listSort(depList);
  83. }
  84. private List<DepOut> listSort(List<DepOut> depList) {
  85. HanyuPinyinOutputFormat format=new HanyuPinyinOutputFormat();
  86. Collections.sort(depList, (o1, o2) -> {
  87. String str1=null;
  88. String str2=null;
  89. try {
  90. str1= PinyinHelper.toHanYuPinyinString(o1.getName(),format," ",true);
  91. str2= PinyinHelper.toHanYuPinyinString(o2.getName(),format," ",true);
  92. } catch (BadHanyuPinyinOutputFormatCombination e) {
  93. throw new RuntimeException(e);
  94. }
  95. return str1.compareTo(str2);
  96. });
  97. return depList;
  98. }
  99. @Override
  100. public List<DepOut> getAllDep(Integer hideSign) {
  101. if(hideSign==null){
  102. hideSign=1;
  103. }
  104. //此处理用于前端不批量改接口
  105. if (hideSign>1){
  106. hideSign=null;
  107. }
  108. List<DepOut> allDep=departmentMapper.selectSuperId(hideSign,null,null);
  109. List<DepOut> dep1=new ArrayList<>();
  110. Integer x=3;//设置顶级
  111. for (DepOut e : allDep) {
  112. if (e.getLvl()==x){
  113. e.setList(selectDepLvl(allDep,e.getId(),x+1));
  114. dep1.add(e);
  115. }
  116. }
  117. return dep1;
  118. }
  119. private List<DepOut> selectDepLvl(List<DepOut> allDep,String id, Integer i) {
  120. List<DepOut> newDep=new ArrayList<>();
  121. for (DepOut depOut : allDep) {
  122. if (depOut.getLvl()==i&&depOut.getSuperId().equals(id)){
  123. if (i<7)depOut.setList(selectDepLvl(allDep,depOut.getId(),i+1));
  124. newDep.add(depOut);
  125. }
  126. }
  127. return newDep;
  128. }
  129. /**
  130. * XXIn form 提交 ,bo包中
  131. * xxOut 输出 bo包中
  132. * domain 类 model中
  133. *
  134. */
  135. @Override
  136. public int addOrganization( String name, String managerId, String type, String superId, String remarks,
  137. Integer workingHoursType,Integer hideSign,String depNo) {
  138. Department superDep=departmentMapper.selectByPrimaryKey(superId);
  139. String id = UUID.randomUUID().toString();
  140. Date now = new Date();
  141. Department dep=new Department();
  142. dep.setId(id);
  143. String createId =departmentMapper.selectAdminNameById(TokenManager.getAdminId());
  144. dep.setCreateId(createId);
  145. dep.setCreateTime(now);
  146. dep.setUpdateTime(now);
  147. dep.setDeletedSign(0);
  148. dep.setName(name);
  149. dep.setLvl(superDep.getLvl()+1);
  150. dep.setType(type);
  151. dep.setManagerId(managerId);
  152. dep.setDepNo(depNo);
  153. // superId=departmentMapper.selectIdByName(superId);
  154. dep.setSuperId(superId);
  155. dep.setRemarks(remarks);
  156. dep.setStatus("0");
  157. dep.setHideSign(hideSign);
  158. dep.setWorkingHoursType(workingHoursType);
  159. departmentMapper.insertSelective(dep);
  160. return 1;
  161. }
  162. private String getMaxDep(Department superDep) {
  163. String sdepNo=superDep.getDepNo();
  164. Department maxDep=departmentMapper.selectByDepNo(superDep.getId());
  165. String depNo=new String();
  166. if (maxDep==null){
  167. depNo= sdepNo +"01";
  168. }else {
  169. String maxDepNo=maxDep.getDepNo();
  170. Integer countNo=Integer.valueOf(maxDepNo.substring(maxDepNo.length()-2));
  171. countNo++;
  172. if (countNo<10){
  173. depNo= sdepNo +"0"+countNo;
  174. }else {
  175. depNo= sdepNo +countNo;
  176. }
  177. }
  178. return depNo;
  179. }
  180. @Override
  181. public List<AdminListBo> selectName(String name) {
  182. List<AdminListBo> list=departmentMapper.selectName(name);
  183. return list;
  184. }
  185. @Override
  186. public OrganizationListOut selectAllById(String id) {
  187. OrganizationListOut olo=departmentMapper.selectAllById(id);
  188. List<ExpenseConfigDetails> list = expenseConfigDetailsMapper.selectByDepId(id);
  189. olo.setExpenseRetrialFinanceExamineList(list.stream().filter(e ->e.getType()==1).collect(Collectors.toList()));
  190. olo.setCeoExamineList(list.stream().filter(e ->e.getType()==2).collect(Collectors.toList()));
  191. olo.setCfoExamineList(list.stream().filter(e ->e.getType()==3).collect(Collectors.toList()));
  192. olo.setViceCeoExamineList(list.stream().filter(e ->e.getType()==4).collect(Collectors.toList()));
  193. olo.setCashierExamineList(list.stream().filter(e ->e.getType()==5).collect(Collectors.toList()));
  194. olo.setSuperId(departmentMapper.selectNameById(olo.getSuperId()));
  195. return olo;
  196. }
  197. @Override
  198. public int deleteById(String id) {
  199. departmentMapper.deleteById(id);
  200. return 1;
  201. }
  202. @Override
  203. public int updateOrganization(InputDep in) {
  204. //获取上级编号
  205. Department superDep=departmentMapper.selectByPrimaryKey(in.getSuperId());
  206. Department useDep = departmentMapper.selectByPrimaryKey(in.getId());
  207. Date now=new Date();
  208. Department dep=new Department();
  209. dep.setLvl(superDep.getLvl()+1);
  210. dep.setName(in.getName());
  211. dep.setType(in.getType());
  212. dep.setUpdateTime(now);
  213. dep.setManagerId(in.getManagerId());
  214. dep.setStatus(in.getStatus());
  215. dep.setRemarks(in.getRemarks());
  216. dep.setId(in.getId());
  217. dep.setSuperId(in.getSuperId());
  218. dep.setDepNo(in.getDepNo());
  219. dep.setAbbreviation(in.getAbbreviation());
  220. dep.setProvince(in.getProvince());
  221. dep.setHideSign(in.getHideSign());
  222. dep.setWorkingHoursType(in.getWorkingHoursType());
  223. dep.setApproval(in.getApproval());
  224. dep.setApprovalAid(in.getApprovalAid());
  225. dep.setTechAdminId(in.getTechAdminId());
  226. dep.setOperationGuaranteeId(in.getOperationGuaranteeId());
  227. List<String> orderS = new ArrayList();
  228. //如果本来部分没有,新增财务
  229. if(StringUtils.isBlank(useDep.getFinanceId())&&StringUtils.isNotBlank(in.getFinanceId())){
  230. addExamine(useDep,in.getFinanceId(),orderS);
  231. }
  232. if(StringUtils.isBlank(useDep.getRetrialFinanceId())&&StringUtils.isNotBlank(in.getRetrialFinanceId())){
  233. addExamine(useDep,in.getExpenseFinanceId(),orderS);
  234. }
  235. if(StringUtils.isBlank(useDep.getTechAdminId())&&StringUtils.isNotBlank(in.getTechAdminId())){
  236. addExamine(useDep,in.getTechAdminId(),orderS);
  237. }
  238. if(!orderS.isEmpty()){
  239. torderNewMapper.updateOrderDepFinanceExamineName(orderS,ProcessStatus.YPCW_JSZJ.getCode());
  240. }
  241. if(StringUtils.isBlank(useDep.getOperationGuaranteeId())&&StringUtils.isNotBlank(in.getOperationGuaranteeId())){
  242. List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YYBZSH.getCode());
  243. torderNewMapper.updateOrderDepFinanceExamineName(strings, ProcessStatus.YYBZSH.getCode());
  244. }
  245. //财务与复审切换的时候要切换所有未审核的财务
  246. boolean updateFinance=false;
  247. boolean updateRetrialFinance=false;
  248. //获取需要重新刷新的财务
  249. List<String> aids =new ArrayList<>();
  250. if(!in.getFinanceId().equals(useDep.getFinanceId())){
  251. dep.setFinanceId(in.getFinanceId());
  252. //审核人切换
  253. departmentMapper.updateOrderDepFinanceNotExamine(in.getFinanceId(),useDep.getFinanceId(),useDep.getId());
  254. //查询切换后的订单刷新审核人
  255. List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getFinanceId());
  256. if (!list.isEmpty()){
  257. torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
  258. }
  259. updateFinance=true;
  260. }
  261. //如果技术总监、运营保障审核、财务复审为空则修改为null
  262. if (StringUtils.isBlank(in.getTechAdminId())||StringUtils.isBlank(in.getOperationGuaranteeId())
  263. ||StringUtils.isBlank(in.getRetrialFinanceId())){
  264. if(StringUtils.isBlank(in.getTechAdminId()))in.setTechAdminId(null);
  265. if(StringUtils.isBlank(in.getOperationGuaranteeId()))in.setOperationGuaranteeId(null);
  266. if(StringUtils.isBlank(in.getRetrialFinanceId()))in.setRetrialFinanceId(null);
  267. departmentMapper.updateNull(in);
  268. }
  269. //处理去掉技术总监
  270. if (in.getTechAdminId()==null||!in.getTechAdminId().equals(useDep.getTechAdminId())){
  271. if(StringUtils.isBlank(in.getTechAdminId())){
  272. //先将旧的查出来
  273. List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getTechAdminId());
  274. //再删除旧单需要审核的
  275. torderExamineMapper.deleteExamineFinance(useDep.getId(),useDep.getTechAdminId());
  276. if (!list.isEmpty()){
  277. //先把药推送到下个流程的查出来
  278. for (String s : list) {
  279. pushCW_JSZJ_Examine(in, s, aids, 0);
  280. }
  281. torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
  282. }
  283. }else{
  284. //审核人切换
  285. departmentMapper.updateOrderDepFinanceNotExamine(in.getTechAdminId(),useDep.getTechAdminId(),useDep.getId());
  286. //查询切换后的订单刷新审核人
  287. List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getTechAdminId());
  288. if (!list.isEmpty()){
  289. torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
  290. }
  291. }
  292. }
  293. if (!in.getRetrialFinanceId().equals(useDep.getRetrialFinanceId())){
  294. if(StringUtils.isBlank(in.getRetrialFinanceId())) {
  295. //先将旧的查出来
  296. List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getRetrialFinanceId());
  297. //再删除旧单需要审核的
  298. torderExamineMapper.deleteExamineFinance(useDep.getId(),useDep.getRetrialFinanceId());
  299. if (!list.isEmpty()) {
  300. //先把药推送到下个流程的查出来
  301. for (String s : list) {
  302. pushCW_JSZJ_Examine(in, s, aids, 1);
  303. }
  304. torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
  305. }
  306. }else {
  307. dep.setRetrialFinanceId(in.getRetrialFinanceId());
  308. departmentMapper.updateOrderDepFinanceNotExamine(in.getRetrialFinanceId(),useDep.getRetrialFinanceId(),useDep.getId());
  309. List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getRetrialFinanceId());
  310. if (!list.isEmpty()){
  311. torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
  312. }
  313. }
  314. updateRetrialFinance=true;
  315. }
  316. if (in.getExpenseFinanceId()!=null&&!in.getExpenseFinanceId().equals(useDep.getExpenseFinanceId())){
  317. dep.setExpenseFinanceId(in.getExpenseFinanceId());
  318. departmentMapper.updateExpenseFinanceNotExamine(in.getExpenseFinanceId(),useDep.getExpenseFinanceId());
  319. }
  320. if (updateFinance){
  321. aids.add(in.getFinanceId());
  322. if(!aids.contains(useDep.getFinanceId())){
  323. aids.add(useDep.getFinanceId());
  324. }
  325. torderMidMapper.updateFinanceId(in.getId(),in.getFinanceId());
  326. newOrderChangeMapper.updateExamineById(in.getFinanceId(), OrderChangeProcess.CWZY.getCode());
  327. }
  328. if(updateRetrialFinance){
  329. if (!aids.contains(in.getRetrialFinanceId())){
  330. aids.add(in.getRetrialFinanceId());
  331. }
  332. if(!aids.contains(useDep.getRetrialFinanceId())){
  333. aids.add(useDep.getRetrialFinanceId());
  334. }
  335. }
  336. //
  337. checkFinaceUpdate(aids);
  338. if (in.getExpenseRetrialFinanceExamine()==1){
  339. dep.setExpenseRetrialFinanceExamine(in.getExpenseRetrialFinanceExamine());
  340. }
  341. if (in.getCeoExamine()==1){
  342. dep.setCeoExamine(in.getCeoExamine());
  343. }
  344. if (in.getCfoExamine()==1){
  345. dep.setCfoExamine(in.getCfoExamine());
  346. }
  347. if (in.getViceCeoExamine()==1){
  348. dep.setViceCeoExamine(in.getViceCeoExamine());
  349. }
  350. if (in.getCashierExamine()==1){
  351. dep.setCashierExamine(in.getCashierExamine());
  352. }
  353. return departmentMapper.updateByPrimaryKeySelective(dep);
  354. }
  355. /**
  356. * 推送财务/财务复审/技术总监审核下个流程
  357. * @param in 部门信息
  358. * @param s 订单编号
  359. * @param aids 统计需要刷新的财务
  360. * @param type 0 技术总监 1财务复审
  361. */
  362. private void pushCW_JSZJ_Examine(InputDep in, String s, List<String> aids, Integer type) {
  363. List<TOrderExamine> tOrderExamines = torderExamineMapper.selectByOrderNo(s, 0);
  364. int i = 0;
  365. for (TOrderExamine e : tOrderExamines) {
  366. if (e.getStatus() == 1) i++;
  367. }
  368. if (i == tOrderExamines.size()) {
  369. //推送订单流程
  370. addOrderLog(s,OrderLogProcess.CWFS.getCode(),type==0?"部门修改技术总监为空,系统自动通过":"部门修改财务复审为空,系统自动通过");
  371. StringBuilder str = new StringBuilder();
  372. TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
  373. TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
  374. TOrderNew newOrder = new TOrderNew();
  375. newOrder.setOrderNo(s);
  376. //如果订单是特批
  377. if (tOrderNew.getApproval() == ApprovalNewState.TPDSH.getCode() || tOrderNew.getApproval() == ApprovalNewState.TPBH.getCode()) {
  378. if (StringUtils.isNotEmpty(in.getOperationGuaranteeId())) {
  379. newOrder.setProcessStatus(ProcessStatus.YYBZSH.getCode());
  380. str.append(order.getOperationGuaranteeName()).append(",");
  381. aids.add(order.getOperationGuaranteeId());
  382. } else if (order.getApprovalStatus() == 0) {
  383. addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
  384. addOrderLog(s,OrderLogProcess.TP.getCode(),"部门特批审核未设置,系统自动通过");
  385. newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
  386. newOrder.setApproval(ApprovalNewState.TPTG.getCode());
  387. } else {
  388. addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
  389. newOrder.setProcessStatus(ProcessStatus.YPTPSH.getCode());
  390. aids.add(order.getApprovalAid());
  391. str.append(order.getApprovalName()).append(",");
  392. }
  393. }
  394. newOrder.setExamineName(str.substring(0,str.length()-1));
  395. torderNewMapper.updateByPrimaryKeySelective(newOrder);
  396. }
  397. }
  398. /**
  399. * 添加审核人 财务专员,财务复审,技术总监审核
  400. * @param useDep 部门
  401. * @param aid 人员编号
  402. * @param list 需要刷新审核人的订单
  403. */
  404. private void addExamine(Department useDep, String aid,List<String> list) {
  405. List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YPCW_JSZJ.getCode());
  406. Admin admin = adminMapper.selectByPrimaryKey(aid);
  407. if (!strings.isEmpty()){
  408. for (String s : strings) {
  409. torderExamineMapper.insertSelective(new TOrderExamine(s,0,admin.getId(),admin.getName()));
  410. if(!list.contains(s)){
  411. list.add(s);
  412. }
  413. }
  414. }
  415. }
  416. private void addOrderLog(String orderNo, Integer process, String remarks) {
  417. TOrderLog tl=new TOrderLog();
  418. tl.setAid(AFTConstants.SUPERADMIN_ID);
  419. tl.setProcess(process);
  420. tl.setOrderNo(orderNo);
  421. tl.setRemarks(remarks);
  422. tOrderLogMapper.insertSelective(tl);
  423. }
  424. /**
  425. * 如果更换了负责人刷新中间表
  426. */
  427. private void checkFinaceUpdate(List<String> aids) {
  428. if (!aids.isEmpty()){
  429. asyncUtils.financeCoutSwitch(aids);
  430. }
  431. }
  432. @Override
  433. public boolean checkDepNo(String depNo,Integer type) {
  434. String useDepNo=departmentMapper.selectIdByDepNo(depNo);
  435. if (StringUtils.isNotBlank(useDepNo)){
  436. if (type==1){
  437. if (!depNo.equals(useDepNo)){
  438. return false;
  439. }else {
  440. return true;
  441. }
  442. }else {
  443. return true;
  444. }
  445. }
  446. return false;
  447. }
  448. private String countDepNo(String sdepNo, Integer count) {
  449. String dep=null;
  450. if(count<10){
  451. dep=sdepNo+"0"+count;
  452. String sid=departmentMapper.selectIdByDepNo(dep);
  453. while(sid!=null){
  454. count=(count+1)%100;
  455. if(count>=10){
  456. dep=sdepNo+count;
  457. }else{
  458. dep=sdepNo+"0"+count;
  459. }
  460. sid=departmentMapper.selectIdByDepNo(dep);
  461. }
  462. }else if(count>=10){
  463. dep=sdepNo+count;
  464. String sid=departmentMapper.selectIdByDepNo(dep);
  465. while(sid!=null){
  466. count=(count+1)%100;
  467. dep=sdepNo+count;
  468. sid=departmentMapper.selectIdByDepNo(dep);
  469. }
  470. }
  471. return dep;
  472. }
  473. private void updateLowerLevelNo(String id,String depNo,Integer lvl) {
  474. List<OrganizationListOut> Nos =departmentMapper.selectIDNBySuperId(id);
  475. int i=1;
  476. for (OrganizationListOut o : Nos) {
  477. o.setLvl(lvl+1);
  478. if(i<10){
  479. String dep=depNo+"0"+i;
  480. if(i>=10){
  481. dep=depNo+i;
  482. }else{
  483. dep=depNo+"0"+i;
  484. }
  485. o.setDepNo(dep);
  486. } else if(i>=10){
  487. String dep=depNo+i;
  488. dep=depNo+i;
  489. o.setDepNo(dep);
  490. }
  491. departmentMapper.updateByNumber(o);
  492. updateLowerLevelNo(o.getId(),o.getDepNo(),o.getLvl());
  493. i++;
  494. }
  495. }
  496. }