最近遇到一个小需求,就是刷新部门的innercode。在导入数据的时候,innercode乱了,所以需要刷新。那先说说innercode是什么吧。

  大家都知道部门是一个树形结构,但是有时候想知道一个部门下面都有哪些下级部门包括下级的下级等等,如果使用上级部门pk一级一级的往下找很麻烦,为了把这个树拉平,创建一个innercode字段。例如本系统中这样,加入本级部门的innercode是AAAA(四位随机字符),那么本部门所在的下级部门,innercode可能就是AAAABBBB,再下级可能就是AAAABBBBCCCC,没一个下级部门比上级部门多四个随机字符,并且前面的字符是和上级部门是一致的。这样就相当于拉平了这个部门树。比如查询本部门下的所有下级部门,可以在SQL中加上like 'AAAA%'就可以查出来了。但是现在有个需求就是innercode乱了,但是部门表里的pk_fatherorg没有乱的,是好的,这就要重新刷新了。实现的逻辑大概如下:

public void updateDeptInnercode(String innercode,String pk_fatherorg) throws DAOException{
String sql = "select innercode,pk_dept,pk_fatherorg from org_dept where dr=0 and pk_fatherorg = '"+pk_fatherorg+"'";
List<Map<String,String>> list = (List<Map<String, String>>)
this.getBaseDAO().executeQuery(sql, new MapListProcessor());
if(list.size()==){
return ;
}
for (Map<String, String> map : list) {
String s = updateCode(innercode,map.get("pk_dept"));
updateDeptInnercode(s,map.get("pk_dept"));
}
}

  private String updateCode(String innercode,String pk_dept) throws DAOException {
    StringBuffer sql = new StringBuffer();
    String s = get4RandomCode();
    //更新部门表
    sql.append("update org_dept set innercode = '")
    .append(innercode).append(s)
    .append("' where pk_dept = '")
    .append(pk_dept)
    .append("'");
    this.getBaseDAO().executeUpdate(sql.toString());
    //更新部门版本表
    sql = new StringBuffer();
    sql.append("update org_dept_v v set v.innercode = '")
    .append(innercode).append(s)
    .append("' where v.pk_vid =(select d.pk_vid from org_dept d where d.pk_dept ='")
    .append(pk_dept)
    .append("' )");
    this.getBaseDAO().executeUpdate(sql.toString());
    return innercode+s;
  }


  private String get4RandomCode(){
    Random rom = new Random();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i <4; i++) {
      char r1 = ran[rom.nextInt(35)];
      sb.append(r1);
    }
    return sb.toString();
  }

  private char[] ran = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z‘,'0','1','2','3','4','5','6','7','8','9'};

部门innercode刷新的更多相关文章

  1. 关于WPF添加右击ContextMeun,以及获取所绑定控件的源

    今天在公司给公司做一个门禁软件,其中有一个添加员工的功能,功能已经做好,但是页面的右边是一个treeView控件,于是我想到再添加员工后,可以在treeview上的部门的TreeViewWithIco ...

  2. C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

    前面一篇随笔企业号的一些基础信息,以及介绍如何配置企业号的回调方式实现和企业号服务器进行沟通的桥梁.本篇主要还是继续介绍企业号的开发工作的开展,介绍微信企业号通讯录管理开发功能,介绍其中组织机构里面如 ...

  3. jsTree 的简单用法--异步加载和刷新数据

    首先这两个文件是必须要引用的,还有就是引用 jQuery 文件就不说了: <link href="/css/plugins/jsTree/style.min.css" rel ...

  4. 移动端touch实现下拉刷新

    移动端实现下拉刷新 第一部分:四个touch事件 1.touchstart:只要将手指放在了屏幕上(而不管是几只),都会触发touchstart事件. 2.touchmove: 当我们用手指在屏幕上滑 ...

  5. 【php增删改查实例】第十节 - 部门管理模块(新增功能)

    正常情况下,在一个部门管理页面,不仅仅需要展示列表数据,还需要基本的增删改操作,所以,我们先把之前写好的新增功能集成进来. 在toolbar中,添加一个新增按钮. <div id="t ...

  6. 金蝶KIS&K3助记码SQL数据库批量刷新

    金蝶KIS&K3助记码SQL数据库批量刷新 用的次数不多,就没有写入存储过程或者触发里面了,可以自行实现. 第一步选择对应账套的数据库,执行下面的命令,这个是一个函数. go if exist ...

  7. form表单提交数据,页面必定会刷新,ajax提交数据不会刷新,做到悄悄提交,多选删除,ajax提交实例

    很多页面用到的模态对话框,如知明网站https://dig.chouti.com/的登录页都是模态对话框, 当点登录时,是用的ajax提交,因为输入错了信息,有返回消息,而页面没有刷新. jquery ...

  8. SSM思路大总结(部门信息的显示和增删改查)

    #ssm整合(部门管理) ##1.新建工程 1.新建maven工程 2.添加web.xml 3.添加tomcat运行环境 4.添加依赖jar包 spring-webmvc mysql commonse ...

  9. 【JEECG技术文档】JEECG部门管理员操作手册

    功能介绍 使用部门管理员设置需要完成以下步骤: 1. 在“部门管理员设置”菜单配置权限以及分配管理员. 2. 在“部门角色管理”菜单配置角色,以及权限. 3. 在“部门用户角色授权”菜单分配角色到哪个 ...

随机推荐

  1. base/7/x86_64/filelists_db FAILED

      解决办法: [root@localhost ~]# cd /var/lib/rpm [root@localhost rpm]# rm -rf __db.* # 清除原 rpmdb 文件 [root ...

  2. [CERC2015]Juice Junctions(边双连通+字符串hash)

    做法 考虑边数限制的特殊条件,显然答案仅有\(\{0,1,2,3\}\) 0:不联通 1:连通 2:边双连通 3:任意删掉一条边都为边双连通 考虑每次删边后记录各点的边双染色情况来特判\(3\):是否 ...

  3. Thift初探 (一)

    Maven pox.xml: <dependency> <groupId>org.apache.thrift</groupId> <artifactId> ...

  4. Go by Example-常量

    Go by Example 中文:常量 在上一节中提到了变量,常用的有两种定义的方式使用var或者短变量的形式进行定义,这节我们来说常量. 常量 常量是指程序运行时不可改变的值,常量必须初始化值,定义 ...

  5. dubbo+zookeeper搭建时报错java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy

    说一下我的环境: jdk1.8 dubbo2.6.1 zookeeper3.4.10 maven3.3.9 搭建demo时报错:java.lang.NoClassDefFoundError: org/ ...

  6. ubuntu dnsmasq

    /var/run/NetworkManager/resolv.conf 而你真实的dns服务器地址,是被这个服务管理维护着的/ local process -> local dnsmasq -& ...

  7. 搭建JavaWeb应用开发环境——Tomcat服务器

    学习web开发,需要先安装一台web服务器,然后再在web服务器中开发相应的web资源,供用户使用浏览器访问. 搭建JavaWeb应用开发环境——Tomcat服务器 1.疑问:学习web开发,为什么必 ...

  8. Flutter移动电商实战 --(39)路由_Fluro的路由配置和静态化

    handler只是单个路由的配置,这节课我们要学习路由的整体配置 整体配置 新建routers.dart文件来做整体配置 detailsHandler就是我们在router_handler里面定义的d ...

  9. ST (Sparse Table:稀疏表)算法

    1541:[例 1]数列区间最大值 时间限制: 1000 ms         内存限制: 524288 KB提交数: 600     通过数: 207 [题目描述] 输入一串数字,给你 MM 个询问 ...

  10. PM2用法简介【命令行启动 --env 参数设置使用问题】

    环境切换 正式开发中分为不同的环境(开发环境.测试环境.生产环境),我们需要根据不同的情景来切换各种环境 pm2通过在配置文件中通过env_xx来声明不同环境的配置,然后在启动应用时,通过--env参 ...