怎么返回经理所在部门所有员工的出勤list,求思路

问题描述

最近做员工考勤系统,现在有一个问题,就是返回经理所在部门所有员工的出勤情况,我现在已经能查询该经理对应的全部员工List<Employee> emps = empDao.findByMgr(m);也能够查询出员工的所有出勤情况Employee emp = empDao.findByName(empName);List<Attend> attends = attendDao.findByEmpAttend(emp);现在我遇到个问题,怎么把经理所在部门所有员工的出勤的list返回到页面我的思路是List<Employee> emps = empDao.findByMgr(m);System.out.println(emps); for(int i =0;i<emps.size();i++) { List<Attend> attends =attendDao.findByEmpAttend(emps.get(i)));}现在这样只能获取一个员工出勤的list,而我想把所有员工出勤的list,怎么做。

解决方案

1、List<Attend> attends = attendDao.findByEmpAttend(emps.get(i))); hibernate提供了in子查询List<Attend> attends = attendDao.findByEmpAttend(emps)); HQL可以通过setParameterList 设置in子查询这样全查回来再赋值2、写HQL,类似于select 员工,出勤 from 员工,出勤 where 员工.经理=? and 员工.id = 出勤.员工ID 自己转换3、原本在员工Employee对象中我有这样一个属性,private Set<Attend> attends = new HashSet<Attend>();你这个不是关系映射了吗? 直接关联抓不行? 最简单
解决方案二:
可以在员工Employee对象中再加个出勤list的属性,添加get和set方法;Employee{ private List<Attend> attends; ...... //get、set方法}然后遍历员工列表查询出勤list并set到员工对象中; List<Employee> emps = empDao.findByMgr(m); for(int i =0;i<emps.size();i++) { Employee emp = emps.get(i); List<Attend> attends =attendDao.findByEmpAttend(emp); emp.setAttends(attends);//set到员工对象中 } 在页面就可以两层循环遍历员工及员工的出勤list了
解决方案三:
public static void main(String[] args){List<Map> yitijiao = new ArrayList<Map>();// 未提交的员工List<Map> weitijiao = new ArrayList<Map>(); // 已提交的员工List<Map> weiwancheng = new ArrayList<Map>(); // 未完成的员工List<Map> bumenlist = new ArrayList<Map>();// 部门列表List<Map> jieguo = new ArrayList<Map>();Map<String, String> yuangong = new HashMap<String, String>();Map<String, String> bumen = new HashMap<String, String>();// ////////////部门////////////////////////bumen.put("id", "1");bumen.put("name", "事业部");bumenlist.add(bumen);bumen = new HashMap<String, String>();bumen.put("id", "2");bumen.put("name", "张三步");bumenlist.add(bumen);// /////////////员工/////////////////////// 已提交的yuangong.put("name", "张三");yuangong.put("id", "1");yuangong.put("bumenid", "1");yitijiao.add(yuangong);yuangong = new HashMap<String, String>();yuangong.put("name", "李四");yuangong.put("id", "2");yuangong.put("bumenid", "1");yitijiao.add(yuangong);yuangong = new HashMap<String, String>();yuangong.put("name", "王五");yuangong.put("id", "3");yuangong.put("bumenid", "2");yitijiao.add(yuangong);yuangong = new HashMap<String, String>();yuangong.put("name", "马六");yuangong.put("id", "4");yuangong.put("bumenid", "2");yitijiao.add(yuangong);// 未提交的yuangong = new HashMap<String, String>();yuangong.put("name", "冯七");yuangong.put("id", "6");yuangong.put("bumenid", "1");weitijiao.add(yuangong);yuangong = new HashMap<String, String>();yuangong.put("name", "房八");yuangong.put("id", "7");yuangong.put("bumenid", "2");weitijiao.add(yuangong);// 为完成的员工yuangong = new HashMap<String, String>();yuangong.put("name", "窜八");yuangong.put("id", "8");yuangong.put("bumenid", "1");weiwancheng.add(yuangong);yuangong = new HashMap<String, String>();yuangong.put("name", "阿九");yuangong.put("id", "9");yuangong.put("bumenid", "2");weiwancheng.add(yuangong);// 组合for (int i = 0; i < bumenlist.size(); i++){// 已提交的写到部门mapfor (int j = 0; j < yitijiao.size(); j++){if (yitijiao.get(j).get("bumenid").equals(bumenlist.get(i).get("id"))){jieguo.add(yitijiao.get(j));bumenlist.get(i).put("已提交", jieguo);}}jieguo = new ArrayList<Map>();// 未提交的写到部门mapfor (int j = 0; j < weitijiao.size(); j++){if (weitijiao.get(j).get("bumenid").equals(bumenlist.get(i).get("id"))){jieguo.add(weitijiao.get(j));bumenlist.get(i).put("未提交", jieguo);}}jieguo = new ArrayList<Map>();// 未完成的写到部门mapfor (int j = 0; j < weiwancheng.size(); j++){if (weiwancheng.get(j).get("bumenid").equals(bumenlist.get(i).get("id"))){jieguo.add(weiwancheng.get(j));bumenlist.get(i).put("未完成", jieguo);}}jieguo = new ArrayList<Map>();}// 解包for (int i = 0; i < bumenlist.size(); i++){System.out.println(bumenlist.get(i));/* * System.out.println("部门名称: " +bumenlist.get(i).get("name")); * System.out.println("部门ID: " +bumenlist.get(i).get("id")); List * temp = (List)bumenlist.get(i).get("已提交"); * System.out.println("已提交总数:" + temp.size()); for (int a = 0; a < * temp.size(); a++) { Map tt = (Map) temp.get(a); * System.out.println(tt.get("name") + "已提交"); } temp = * (List)bumenlist.get(i).get("未提交"); System.out.println("未提交总数:" + * temp.size()); for (int a = 0; a < temp.size(); a++) { Map tt = * (Map) temp.get(a); System.out.println(tt.get("name") + "未提交"); } * } */}}
解决方案四:
直接写关联sql
解决方案五:
主要看对象之间是怎么关联在一起的,如果有关联可以直接查出来的。Attend->Employee->Department,可能是这种关系吧如果是可以from Attent t where t.employee.department.code =?
解决方案六:
这个要看你表怎么设计的吧,如果出勤在员工表中,并且是bit之类的类型的话,直接sql语句就搞定啦
解决方案七:
List<Employee> emps = empDao.findByMgr(m); List<List<Attend>> lst = new ArrayList<List<Attend>>();System.out.println(emps); for(int i =0;i<emps.size();i++) { List<Attend> attends = attendDao.findByEmpAttend(emps.get(i)));lst.add(attends); }

时间: 2024-07-31 10:45:34

怎么返回经理所在部门所有员工的出勤list,求思路的相关文章

sql-SQL语句求思路求解决,要晓得部门经理叫什么名字

问题描述 SQL语句求思路求解决,要晓得部门经理叫什么名字 这样说吧,要晓得部门名称 也要晓得部门经理叫什么名字 这个部门在1月份来了多少人, 走了多少人,有多少人派遣出去 这种sql语句如何实现? 求各位大神给点sql思路,小弟不才,想不出来~~~ 解决方案 该问题已自行解决.谢谢大家. 解决方案二: 表结构上怎样的 解决方案三: 题目是怎样的啊,只有问题,没有条件怎么写啊 解决方案四: 这个问题,我解决了...谢谢热忱的道友们! 解决方案五: 确实不好回答,没有表结构,不知道相关字段

使用光标查询10部门的员工姓名和工资,并打印__使用光标查询员工姓名和工资,并打印

/* 使用光标查询10部门的员工姓名和工资,并打印 */ set serveroutput on declare   --申明一个光标代表员工的姓名和工资   --cursor c1 is select ename,sal from emp;   --定义一个带参数的光标   cursor c2(dno number) is select ename,sal from emp where deptno= dno;   --定义两个变量保存员工姓名和薪水   pename emp.ename% T

java定时器 run方法怎么返回值 我要返回result 代码里一直报错 晚生跪求解决

问题描述 java定时器 run方法怎么返回值 我要返回result 代码里一直报错 晚生跪求解决 public VirementResultInfo queryTransaction( final String bank, final TransactionInfo transactionInfo) { // final VirementResultInfo result = null; TimerTask task = new TimerTask() { @Override public v

怎么调用 ace++接口-android怎么上传图片到FACE++ 接口返回年龄信息,我已经有账号,求大神指点 小弟感激不尽

问题描述 android怎么上传图片到FACE++ 接口返回年龄信息,我已经有账号,求大神指点 小弟感激不尽 android怎么上传图片到FACE++ 返回年龄信息,我已经有账号,求大神指点 小弟感激不尽 解决方案 http://www.cnblogs.com/mainroadlee/archive/2013/10/26/android_sdk_face_detection.html 解决方案二: FACE++的作用就是把图片上的人物识别出来,然后返回给你一个json字符串,里面包括一些列的信息

甲骨文中国人力经理光杆司令服务300员工

图为甲骨文软件人力资源部高级经理武京国 说起甲骨文,这可是家名企,武京国现任甲骨文软件研究开发中心(北京)有限公司的人力资源部高级经理,听起来挺令人羡慕的吧?其实他很"惨":他是个"光杆司令",整个部门只有他一个人.采访中他风趣地对记者说:我一个人为300名员工服务. 武京国 认为:"每个员工都对自己的职业发展有所规划,公司应该为员工提供持续发展的空间和氛围.如果做不到这些,那是很失败的." 在人力资源管理圈子里,武京国颇有名气.这个人有着 丰富

Linux中如何直接使用cd进入which返回值所在的目录

一.需要的Linux命令 1.Linux下将一个命令的输出作为另一个命令的参数:``(键盘左上的点,注意和引号不同)或者$() 2.提取文件目录中文件名之外目录的命令:dirname 二.实现直接使用cd进入到which得到的Android的adb文件目录的方法 方法1:cd `dirname $(which adb)` 方法2:cd $(dirname $(which adb)) 三.返回原目录 方法1:cd - 方法2:cd $OLDPWD 更多精彩内容:http://www.biancen

为10号部门的员工涨工资

declare    cursor c1(dno number) is select empno from emp where detpno=dno;    pempno emp.empno%type; begin    open c1(10);    loop       fetch c1 into pempno;       exit when c1%notfound;       update emp set sal = sal +100 where empno=pempno;    en

火狐中静态html取不到.ashx的返回值但.aspx中可以取到 跪求大侠

问题描述 <scripttype="text/javascript"language="javascript">functionDQC_httpRequest(url,func){varhttp_request;if(window.XmlHttpRequest){//非IE浏览器xmlHttp=newwindow.XMLHttpRequest();http_request=newwindow.XMLHttpRequest();}elseif(window

extjs中用DWR调用java返回字符串放到panel的html中,求思路,谢谢

问题描述 如题 解决方案 解决方案二:哪进行不下去!还要求思路!java返回字符串不会DWR获取不到返回的字符串不会extJs用返回的字符串放到panel的HTML中不会