/**
* 查看权限详情
* @param id 部门id
* @return
*/
@GetMapping("getListInfo")
public R getDetail(String id){
List<SapFormCategory>sapFormCategoryList=new ArrayList<>();
//1.将部门大类单据整合,将子类单据id去重合并
Map<String,String>keyMap=new HashMap<String,String>();
//过滤后要返回的list
String[] deptIds=id.split(",");
for(String deptId:deptIds){
//获取权限设置
Map<String,Object>deptMap=new HashMap<String,Object>();
deptMap.put("dept_id",deptId);
log.info("获取权限设置deptMap====="+deptMap);
List<SapJurisdictionMaintain> maintainList=service.listByMap(deptMap);
log.info("获取权限设置maintainList===="+maintainList);
for(SapJurisdictionMaintain msg:maintainList){
String typeId=msg.getTypeId();
String orderIds=msg.getOrderId();
if(!keyMap.containsKey(typeId)){
keyMap.put(typeId,orderIds);
}else{
String values =keyMap.get(typeId);
String[]orders=orderIds.split(",");
for(String order:orders){
if(!values.contains(order)){
values.concat(",").concat(order);
keyMap.put(typeId,values);
}
}
}
}
}
//2.根据分类好的 map中的key是大类id,vaue是细类id
if(Func.isNotEmpty(keyMap)){
Iterator<String> iter = keyMap.keySet().iterator();
while(iter.hasNext()){
String key=iter.next();
String value = keyMap.get(key);
log.info(key+" "+value);
//获取表单类型
SapFormCategory sapFormCategory=categoryService.getById(Long.valueOf(key));
if(Func.isNotEmpty(sapFormCategory)){
//根据大的单据id获取子单据
Map<String,Object>map=new HashMap<String,Object>();
map.put("form_category_id",Long.valueOf(key));
//根据form_category_id获取单据列表
List<SapFormInfo> list=infoService.listByMap(map);
if(Func.isNotEmpty(list)){
Map<String,Object>valueMap=new HashMap<>();
List<SapFormInfo>returnList=new ArrayList<>();
String[]valueIds=value.split(",");
//根据设置的权限过滤出自己具有的权限列表
for(String valueId:valueIds){
for(SapFormInfo formInfo:list){
if(valueId.equals(String.valueOf(formInfo.getId()))){
returnList.add(formInfo);
}
}
}
sapFormCategory.setSapFormInfoList(returnList);
}
}
//将单据小类放入单据分类
sapFormCategoryList.add(sapFormCategory);
}
}
return R.data(sapFormCategoryList);
}

  

查看权限详情 将部门大类单据整合,将子类单据id去重合并的更多相关文章

  1. 验证销售部门的数据查看权限-脚本demo

    1 # coding:utf-8 2 ''' 3 @file: run_old.py 4 @author: jingsheng hong 5 @ide: PyCharm 6 @createTime: ...

  2. Android布局6大类

    1:在我们Android开发中,常见的布局的方式有6大类 线性布局LinearLayout 相对布局RelativeLayout 表格布局TableLayout 单帧布局FrameLayout 绝对布 ...

  3. 浅析微信支付:公众平台卡券功能开通、HTML5线上发券(JS-SDK接口)、查看卡券详情

    本文是[浅析微信支付]系列文章的第十六篇,主要讲解如何使用微信公众平台的卡券功能.如何使用HTML5在网页展示用户领券以及微信卡券和商户平台代金券的关系. 浅析微信支付系列已经更新十六篇了哟-,没有看 ...

  4. Android--仿1号店继续拖动查看图文详情——一个自定义的ViewGroup

    声明:源代码不是我写的,是网上的以为大神写的(地址给忘了),我拿过来以后呢,稍微改动了一下源码,使之符合了项目需求,再次特别感谢那位大牛,非常感谢. 是一个自定义布局,继承自ViewGroup pac ...

  5. 技术流:6大类37种方式教你在国内推广App

    转自:http://www.gamelook.com.cn/2015/01/201906 如何有效的推广自己App,是每个发行商都要考虑的问题,当然每个产品都有适合自己的推广方式.本文就集结了包括应用 ...

  6. Java基础详解 (一)Java的类成员访问权限修饰词(以及类访问权限)

    在一个类的内部,其成员(包括成员变量和成员函数)能否被其他类所访问,取决于该成员的修饰词.Java的类成员访问权限修饰词有四类:private,无(默认情况下),protected和public.其权 ...

  7. dll的加载方式主要分为两大类,显式和隐式链接

    之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200).现在先再深入点写写dll的加载方式. d ...

  8. 今天工作中遇到的根据用户id取得产品大类和相关小类的问题

    今天做了一个项目,需求是客户登陆后,可以从会员中心发布详细信息(包括联系信息和公司信息),插入到数据库后在将来生成一个公司页面模板,一般的产品大类+小类 用repeater嵌套就可以了,但是这个涉及到 ...

  9. VS2015 导航栏 查看每个cpp文件中类以及类成员函数的框框

    这个可以查看每个cpp文件中类以及类成员函数的框框叫导航栏! 怎么打开导航栏可以再百度.

随机推荐

  1. Linux Tomcat安装篇(daemon运行,开机自启动)

    目录 前言 作为一个Java后端开发者,tomcat想必是最最最熟悉的一个开发组件了,tomcat环境的搭建部署都十分简单.安装部署只需要两步,第一步下载,第二步解压,这样一个基础的tomcat环境就 ...

  2. Dotnet Core下的Channel, 你用了吗?

    今天给大家分享一个微软官方的好东西:Channel.   前言 今天给大家分享一个微软官方的生产者/消费者方案的特性解决:Channel. Channel在System.Threading.Chann ...

  3. NTML

     NTLM:         1.客户端向服务器发送一个请求,请求中包含明文的登陆用户名.在服务器中已经存储了登陆用户名和对应的密码hash         2.服务器接收到请求后,NTLMv2协议下 ...

  4. nginx,wsgi项目部署

    1.一些重要概念 https://www.cnblogs.com/xiaonq/p/8932266.html 1.1web容器 什么是web容器 1.web容器是帮助我们部署java丶php丶pyth ...

  5. iNeuOS工业互联平台,WEB组态(iNeuView)图元和数据点组合及生成新图元复用,实现拖业务

    目       录 1.      概述... 1 2.      平台演示... 2 3.      应用过程... 2 1.   概述 iNeuView视图建模Web组态平台实现图元和数据点组合及 ...

  6. PyQt(Python+Qt)学习随笔:通过QMainWindow的resizeDocks方法调整QDockWidget停靠窗大小

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMainWindow的resizeDocks用于将QMainWind ...

  7. HTTP助记

    1** 信息,服务器收到请求,需要请求者继续执行操作 100 continue 继续,客户端应继续请求 101 swithching protocls 切换协议,服务器根据客户端的请求切换协议.只能切 ...

  8. CobaltStrike 生成office宏病毒进行钓鱼攻击

    关于WORD宏: 在百度百科上有: 宏是一个批量处理程序命令,正确地运用它可以提高工作效率.微软的office软件允许用户自己编写,叫VBA的脚本来增加其灵活性,进一步扩充它的能力.如完打开word文 ...

  9. Java的字符串操作一些简单的思考

    Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...

  10. Codeforces Edu Round 65 A-E

    A. Telephone Number 跟之前有一道必胜策略是一样的,\(n - 10\)位之前的数存在\(8\)即可. #include <iostream> #include < ...