最近遇到一个小需求,就是刷新部门的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. 【原创】导出aws ec2为csv

    1.安装 pip  install boto3 csv 2.使用脚本更新秘钥和地区 # 导出aws ec2列表为cvs import boto3 import csv   ec2 = boto3.cl ...

  2. ERROR: node with name "rabbit" already running on "localhost"

    rabbitmqctl start_app启动没有这个问题

  3. 如何设置xshell代理?

    场景:我想在公司内部用一台服务器A访问客户内网的机器C.在公司和客户之间有一台中间服务器B,我只能先连接到中间服务器,然后通过中间服务器跳转才能到客户C机器. 上面场景的连接策略:A->B-&g ...

  4. GIAC 技术大会 Redis 演讲文字稿

    附录:https://mp.weixin.qq.com/s/mvAkPXBayAzT_RWFdsOt5A 观众朋友们,我是来自掌阅的工程师钱文品,今天我带来的是分享主题是:Redis 在海量数据和高并 ...

  5. regasm注册com组件

    注意: regasm.exe在不同framework版本下的系统路径 一般存储的路径为:C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 系统的版本不同,运 ...

  6. mybatis bind标签

    开门见山的说,平时写模糊查询,一直用${name},例如: select * from table where name like '%${name}%' 后来知道了,这样写可能会引发sql注入,于是 ...

  7. scroll-view组件实现下拉刷新, 拉到底加载更多

    官方文档已声明,即使在page.json和app.json中开启下拉刷新,scroll-view组件也是不支持的.但我们可以通过曲线救国的方法来实现 实现代码 // wxml <scroll-v ...

  8. Win+数字快速启动/切换指定程序

    Windows键+数字,可以快速启动任务栏上的程序 按下按下Win+4桌面将切换到排序第4的程序:页也就是谷歌浏览器. 今天刚发现这个小功能.   文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎 ...

  9. Benchmark result without MONITOR running: Benchmark result with MONITOR running (redis-cli monitor > /dev/null): 吞吐量 下降约1半 Redis监控工具,命令和调优

    https://redis.io/commands/monitor In this particular case, running a single MONITOR client can reduc ...

  10. CAP C3-2分析

    一致性 可用性 分区容错性 <Hadoop构建数据仓库实践> p84