/**
* 查看权限详情
* @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. 02-Python里字符串的常用操作方法--split()函数和join()函数

    1.split() --分割,返回一个列表, 会丢失分割字符 实例: my_str = 'you and me and he' list01 = my_str.split('and') list02 ...

  2. 05_Content Provider

    Content Provider是内容提供器,与内容(数据)的存取(存储.获取)有关,是Android应用程序的四大组成部分之一,是Android中的跨应用访问数据机制. 数据库在Android当中是 ...

  3. activiti笔记

    activiti笔记 核心api api介绍 1.ProcessEngine 说明: 1) 在Activiti中最核心的类,其他的类都是由他而来. 2) 产生方式: ProcessEngine pro ...

  4. PyQt(Python+Qt)学习随笔:QScrollArea为什么不起作用未出现滚动条?

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 老猿在进行Scroll Area部件测试时,在下面的窗体中放置了一个Scroll Area部件,在部 ...

  5. Mybatis04

    title: Mybatis学习04 date: 2020-01-20 21:48:00 tags: 这次的笔记主要是mybatis中的注解 1.实体类的注解 实体类的注解在mybati的XML文件中 ...

  6. Java面试专题-多线程(3)-原子操作

  7. 通过url传递对象

    1.使用 encodeURI() 对对象进行编码 2.在另一个页面使用

  8. 计算机语言与JAVA的发展

    计算机语言与JAVA的发展 第一代语言 2进制 第二代语言 汇编语言 解决人类无法读懂的问题 指令替代二进制 目前应用 逆向工程 机器人 病毒 第三代语言 摩尔定律 性能提升愈来愈慢 高级语言 面向过 ...

  9. 自搭建jetbrains系列ide授权服务器

    1.下载 LicenseServer 地址:https://mega.nz/#!7B5UVY6b!Hae2ceTBPIrTowQN0sV9fQ5lGOKzGxas2ug02RZAdGU,里面有不同的服 ...

  10. Springboot mini - Solon详解(八)- Solon的缓存框架使用和定制

    Springboot min -Solon 详解系列文章: Springboot mini - Solon详解(一)- 快速入门 Springboot mini - Solon详解(二)- Solon ...