项目中考核参数映射集代码片段

1. QuestionnairesService类中:

        /**
	 * 获取岗位id-问卷id的映射, 一个岗位可能会对应两份试卷(业绩卷、能力态度卷)
	 * 
	 * @return
	 */
	public Multimap<Long, Long> getPostQuestMap() {
		// 当前考评周期
		AppraisalPeriod period = testingService.getLast().getAppraisalPeriod();
		Multimap<Long, Long> postQuestMap = ArrayListMultimap.create();
		List<Questionnaires> questList = questionnairesDao
				.findAll(new Questionnaires().enable());
		for (Questionnaires quest : questList) {
			if (quest.getPost() != null
					&& quest.getAppraisalCycle().getAppraisalPeriod()
							.equals(period)) {
				postQuestMap.put(quest.getPost().getId(), quest.getId());
			}
		}
		return postQuestMap;
	}

2. JXUserService中

        /**
	 * 获得用户id-岗位id的映射(userId, postId)
	 * 
	 * @return
	 */
	public Map<Long, Long> getUserPostMap(List<JXUser> userList) {
		Map<Long, Long> userPostMap = new HashMap<Long, Long>();
		for (JXUser user : userList)
			userPostMap.put(user.getId(), user.getPost().getId());
		return userPostMap;
	}

3. JXUserService中

/**
	 * 获得岗位id-用户id的多Key映射(postId, userId)
	 * 
	 * @return
	 */
	public Multimap<Long, Long> getPostUsersMap(List<JXUser> userList) {
		Multimap<Long, Long> postUsersMap = ArrayListMultimap.create();
		for (JXUser user : userList)
			postUsersMap.put(user.getPost().getId(), user.getId());
		return postUsersMap;
	}

4. JXUserService中

        /**
	 * 被评用户id-评分用户id,岗位评分关系PostScoreRelation映射表
	 * @return
	 */
	public MultiKeyMap<Long, PostScoreRelation> findTestingParam() {
		//输出对象
		MultiKeyMap<Long, PostScoreRelation>  multiMap = new MultiKeyMap<Long, PostScoreRelation>();
		List<JXUser> userList = userDao.findAll(new JXUser().enable());
        //岗位-用户(postId,userIds)
		Multimap<Long, Long> postUsersMap = getPostUsersMap(userList);
		Map<Long, Collection<Long>> postUsers = postUsersMap.asMap();
		//用户-岗位(userId,postId)
		Map<Long, Long> userPostMap = getUserPostMap(userList); 
		//用户-问卷(postId,questionnaireIds)
		Multimap<Long, Long> postQuestMap = questService.getPostQuestMap(); 
		Map<Long, Collection<Long>> postQuests = postQuestMap.asMap();

		// 获得评分关系
		List<PostScoreRelation> psrList = postService.findPSRs();

		for (PostScoreRelation psr : psrList) { //根据岗位评分关系遍历
			Collection<Long> userIds = postUsers.get(psr.getPost().getId());   // 被评岗位id->被评用户userIds;
			Collection<Long> questIds = postQuests.get(psr.getPost().getId()); // 被评岗位id->问卷questIds;
			for (Long questid : questIds) { // 被评用户岗位试卷遍历
				for (Long userid : userIds) { // 被评用户遍历
					Collection<Long> eavlUserIds = postUsers.get(psr
							.getPostMap().getId()); // 评分岗位id
					for (Long eavluserid : eavlUserIds) {
						multiMap.put(userid,eavluserid,questid, psr); //被评用户id-评分用户id-问卷, 岗位评分关系
					}
				}
			}
		}
		return multiMap;
	}
时间: 2024-10-28 13:21:39

项目中考核参数映射集代码片段的相关文章

在一个项目中同时使用Swift和Objective-C代码混合编程的方法

主要介绍了在一个项目中同时使用Swift和Objective-C代码的方法,在一个工程中同时使用Swift和Objective-C混合语言编程的方法. Swift 与 Objective-C 的兼容能力使你可以在同一个工程中同时使用两种语言.你可以用这种叫做 mix and match 的特性来开发基于混合语言的应用,可以用 Swfit 的最新特性实现应用的一部分功能,并无缝地并入已有的 Objective-C 的代码中. Mix and Match 概述 Objective-C 和 Swift

iOS对项目中所有加阴影的代码进行优化

1. 对项目中所有加阴影的代码进行优化 目前项目中尤其是表格单元格中使用如下加阴影代码严重影响性能(5.2.5航班查询结果页卡顿的原因)     self.cellBG.layer.shadowColor = [[UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:1] CGColor];     self.cellBG.layer.shadowOffset = CGSizeMake(1, 1);     self.cellBG.layer.sha

在Windows命令行窗口中输入并运行PHP代码片段(不需要php文件)的方法

有时候只是简单的为了测试某个php函数的效果,以前总是需要建一个php文件,复制这个文件的路径,再通过web访问或者用php命令执行这个php文件. 一直想要怎么才能不用创建文件,才能直接执行PHP代码片段呢?终于找到了方法,现在分享出来,给有需要的人. 前提: 1. 本文只是说Windows下的情况.其他操作系统也类似,但略有不同. 2. 必需已经安装好了php,并设置好了环境变量.如果下载的可执行安装包进行安装的,一般已经自动设好环境变量了.如果是下载的zip包自己解压的,需要手工设置环境变

五年干货分享!前端开发中最常用的JS代码片段

很多网友私信我,说学到js就开始卡壳了,甚至初略的看了一下js,就跳过开始学习框架之类的.这里要提醒你,js是前端的重中之重,如果你忽视了,后果不堪设想! 学好,并熟练的运用这门编程语言真的很难吗?本篇文章为大家总结了一些前端开发中最常用的JS代码片段,希望能对大家的学习以及工作上都能有所帮助,有所收获. HTML5 DOM 选择器 javascript 代码 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.i

shiro真正项目中的实战应用核心代码!!!

欢迎转载!!!请注明出处!!! 说道shiro的学习之路真是相当坎坷,网上好多人发的帖子全是简单的demo样例,核心代码根本没有,在学习过程中遇到过N多坑. 经过自己的努力,终于整出来了,等你整明白之后发现,确实没那么难,只是没人告诉你,自己去想向确实不好办,只能通过看源码加上自己猜想,不断尝试. 直接看主题.我就直接说受权这了,不说认证登录了,这种帖子n多个,我要说的是真正的核心代码!!!含金量超高!!!欢迎转载!请注明出处!!! 首先看先自定义的Realm: /** * 授权查询回调函数,

项目中基础参数

1U=44.45mm=1.75英寸 机柜的参数为(高x宽x深) 60cm,80cm,96cm,100cm四个深度可供选择,其中机箱机柜可订做110cm,120cm深,机柜的深度选择需要充分考虑您需要安装的设备深度,取其中最深设备的尺寸.在最深设备尺寸的基础上,增加20cm左右,作为预留的走线空间

前端开发中最常用的JS代码片段

HTML5 DOM 选择器 // querySelector() 返回匹配到的第一个元素 var item = document.querySelector('.item'); console.log(item); // querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合 var items = document.querySelectorAll('.item'); console.log(items[0]); 阻止默认行为 // 原生js document.

SpringMVC项目中获取所有URL到Controller Method的映射

Spring是一个很好很强大的开源框架,它就像是一个容器,为我们提供了各种Bean组件和服务.对于MVC这部分而言,它里面实现了从Url请求映射控制器方法的逻辑处理,在我们平时的开发工作中并不需要太多的理会这个Url是怎么和控制器中的方法建立映射的,一切都由Spring MVC帮我们搞定了. 但是我今天在做SDK工程的时候,突然产生一个想法:能否把我项目中的所有Url和Method的映射信息打印出来?以便我一眼就看出我已经完成了那些API接口开发,这些方法需要什么参数.就像下图所示: 有了想法就

sublimetext3中保存代码片段

在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累.“蓝瘦”(难受).“香菇”(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在空闲的时候就把常常用到的代码找出来,做成代码片段,为以后的开发缩减时间. 这里整理了保存代码片段的整个过程: 1.打开sublimetext3,在菜单栏找到tool,在tool这一栏找到“新代码片段...”;如下所示: 2.点击“新代码片段...” 3.在 <content><![CDATA[ 代码  ]]></con