OrgService.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package com.hb.proj.sys.service;
  2. import java.util.Date;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.apache.commons.lang3.StringUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import com.hb.proj.model.OrgPO;
  9. import com.hb.proj.model.OrgVO;
  10. import com.hb.xframework.dao.core.SpringJdbcDAO;
  11. import com.hb.xframework.dao.util.UUIDHexGenerator;
  12. @Service
  13. public class OrgService {
  14. @Autowired
  15. private SpringJdbcDAO dao;
  16. /**
  17. * 通过父节点查询直接子节点
  18. * @param superId
  19. * @return
  20. */
  21. public List<Map<String,Object>> loadBySuperId(String superId){
  22. StringBuilder sql=new StringBuilder();
  23. sql.append("select * from tsys_org");
  24. sql.append(" where del_if=false and super_id=?");
  25. return dao.queryForList(sql.toString(), superId);
  26. }
  27. public String add(OrgPO org) {
  28. UUIDHexGenerator uuid = UUIDHexGenerator.getInstance();
  29. org.setOrgId(uuid.generate());
  30. org.setCreateTime(new Date());
  31. org.setModifyTime(new Date());
  32. org.setDelIf(false);
  33. dao.insert(org, "tsys_org");
  34. return org.getOrgId();
  35. }
  36. public boolean delete(String orgId) {
  37. String sql="update tsys_org set del_if=true where org_id=?";
  38. dao.exeUpdate(sql,orgId);
  39. return true;
  40. }
  41. public OrgVO get(String orgId) {
  42. return dao.queryForPojo("select * from tsys_org where org_id=?", OrgVO.class, orgId);
  43. }
  44. /**
  45. * 更新组织机构
  46. * @param org 组织机构实体
  47. * @param newAssistCode 更新后的新助记码
  48. * @return
  49. */
  50. public boolean update(OrgPO org,String newAssistCode){
  51. if(StringUtils.isNotEmpty(newAssistCode)){
  52. updateAssistCode(org.getAssistCode(),newAssistCode);
  53. org.setAssistCode(newAssistCode);
  54. }
  55. dao.update(org, "tsys_org", "org_id");
  56. return true;
  57. }
  58. /**
  59. * 创建指定级别下的最大assistCode
  60. * @param superId
  61. * @return
  62. */
  63. public String generateLeveledCode(String superId) {
  64. String superAssistCode=null;
  65. if("0".equals(superId)){ //顶级父节点
  66. superAssistCode="C";
  67. }
  68. else{
  69. OrgVO superNode=get(superId);
  70. if(superNode==null){
  71. return null;
  72. }
  73. superAssistCode=superNode.getAssistCode();
  74. if(StringUtils.isEmpty(superAssistCode)){
  75. superAssistCode="C";
  76. }
  77. }
  78. String subMaxAssistCode = getMaxSubAssistCode(superId);
  79. if (subMaxAssistCode == null || "null".equalsIgnoreCase(subMaxAssistCode)) { // 没有子编码时
  80. return superAssistCode + "000";
  81. }
  82. String subSerial = subMaxAssistCode.replaceFirst(superAssistCode, ""); // 子编码流水号
  83. int nextNum = Integer.parseInt(subSerial) + 1;
  84. subSerial = String.format("%1$03d", nextNum);
  85. return superAssistCode + subSerial;
  86. }
  87. /**
  88. * 获取指定父级下的最大子节点助记码
  89. * @param superId
  90. * @return
  91. */
  92. private String getMaxSubAssistCode(String superId) {
  93. String sql = "select max(assist_code) assist_code from tsys_org where super_id=?";
  94. return dao.queryForObject(sql, String.class, superId);
  95. }
  96. /**
  97. * 批量更新某类编码的助记码
  98. * @param assistCode
  99. * @param newAssistCode
  100. * @return
  101. */
  102. private boolean updateAssistCode(String assistCode, String newAssistCode) {
  103. StringBuilder sql = new StringBuilder();
  104. sql.append("update tsys_org set assist_code=replace(assist_code,?,?)");
  105. sql.append(" where assist_code like ?");
  106. dao.exeUpdate(sql.toString(), assistCode, newAssistCode, assistCode + "%");
  107. return true;
  108. }
  109. }