コード例 #1
0
 /** 更新所有子部门的SerialNo */
 @Transactional
 public void updateChildrenSerialNo(Dept parent, Map serialMap) {
   logger.debug("Update " + parent.getName() + "'s children serial No.");
   Set<Dept> children = parent.getChildDepts();
   Integer serial = null;
   for (Dept child : children) {
     serial = this.getSerial(child, serial);
     child.setSerialNo(buildSerialNo(parent, serial));
     serialMap.put(child.getId(), buildSerialNo(parent, serial));
     // getDao().saveObject(child);
     if (child.getChildDepts().size() > 0) {
       updateChildrenSerialNo(child, serialMap);
     }
   }
 }
コード例 #2
0
 /** 重设所有部门编号。 */
 @Transactional
 public void updateAllSerialNo() {
   List<Dept> tops = getDao().query("from Dept d where d.parentDept is null");
   Map serialMap = new HashMap(100); // 用于存放部门ID-SerialNo
   // 计算所有部门编号,并将部门ID-部门编号的对应关系存入serialMap
   Integer serial = null;
   for (Dept top : tops) {
     serial = this.getSerial(top, serial);
     // String serialNo = getSerialNo(top);
     top.setSerialNo(buildSerialNo(null, serial));
     serialMap.put(top.getId(), buildSerialNo(null, serial));
     // getDao().saveObject(top);
     if (top.getChildDepts().size() > 0) {
       this.updateChildrenSerialNo(top, serialMap);
     }
   }
   // 批量更新部门编号
   Set<Integer> ids = serialMap.keySet();
   for (Integer id : ids) {
     Dept dept = get(id);
     getDao().evict(dept);
     dept.setSerialNo((String) serialMap.get(id));
     getDao().getHibernateTemplate().update(dept);
   }
 }