|
@@ -0,0 +1,127 @@
|
|
|
|
+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;
|
|
|
|
+ }
|
|
|
|
+}
|