123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- package com.hb.proj.sys.service;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.hb.proj.model.OrgPO;
- import com.hb.proj.model.OrgVO;
- import com.hb.xframework.dao.core.SpringJdbcDAO;
- import com.hb.xframework.dao.util.UUIDHexGenerator;
- @Service
- public class OrgService {
- @Autowired
- private SpringJdbcDAO dao;
-
- /**
- * 通过父节点查询直接子节点
- * @param superId
- * @return
- */
- public List<Map<String,Object>> loadBySuperId(String superId){
- StringBuilder sql=new StringBuilder();
- sql.append("select * from tsys_org");
- sql.append(" where del_if=false and super_id=?");
- return dao.queryForList(sql.toString(), superId);
- }
-
- public String add(OrgPO org) {
- UUIDHexGenerator uuid = UUIDHexGenerator.getInstance();
- org.setOrgId(uuid.generate());
- org.setCreateTime(new Date());
- org.setModifyTime(new Date());
- org.setDelIf(false);
- dao.insert(org, "tsys_org");
- return org.getOrgId();
-
- }
-
- public boolean delete(String orgId) {
- String sql="update tsys_org set del_if=true where org_id=?";
- dao.exeUpdate(sql,orgId);
- return true;
- }
-
- public OrgVO get(String orgId) {
- return dao.queryForPojo("select * from tsys_org where org_id=?", OrgVO.class, orgId);
- }
-
- /**
- * 更新组织机构
- * @param org 组织机构实体
- * @param newAssistCode 更新后的新助记码
- * @return
- */
- public boolean update(OrgPO org,String newAssistCode){
- if(StringUtils.isNotEmpty(newAssistCode)){
- updateAssistCode(org.getAssistCode(),newAssistCode);
- org.setAssistCode(newAssistCode);
- }
- dao.update(org, "tsys_org", "org_id");
- return true;
- }
-
- /**
- * 创建指定级别下的最大assistCode
- * @param superId
- * @return
- */
- public String generateLeveledCode(String superId) {
- String superAssistCode=null;
- if("0".equals(superId)){ //顶级父节点
- superAssistCode="C";
- }
- else{
- OrgVO superNode=get(superId);
- if(superNode==null){
- return null;
- }
- superAssistCode=superNode.getAssistCode();
- if(StringUtils.isEmpty(superAssistCode)){
- superAssistCode="C";
- }
- }
-
- String subMaxAssistCode = getMaxSubAssistCode(superId);
-
- if (subMaxAssistCode == null || "null".equalsIgnoreCase(subMaxAssistCode)) { // 没有子编码时
- return superAssistCode + "000";
- }
- String subSerial = subMaxAssistCode.replaceFirst(superAssistCode, ""); // 子编码流水号
- int nextNum = Integer.parseInt(subSerial) + 1;
- subSerial = String.format("%1$03d", nextNum);
- return superAssistCode + subSerial;
- }
-
-
- /**
- * 获取指定父级下的最大子节点助记码
- * @param superId
- * @return
- */
- private String getMaxSubAssistCode(String superId) {
- String sql = "select max(assist_code) assist_code from tsys_org where super_id=?";
- return dao.queryForObject(sql, String.class, superId);
- }
-
- /**
- * 批量更新某类编码的助记码
- * @param assistCode
- * @param newAssistCode
- * @return
- */
- private boolean updateAssistCode(String assistCode, String newAssistCode) {
- StringBuilder sql = new StringBuilder();
- sql.append("update tsys_org set assist_code=replace(assist_code,?,?)");
- sql.append(" where assist_code like ?");
- dao.exeUpdate(sql.toString(), assistCode, newAssistCode, assistCode + "%");
- return true;
- }
- }
|