@ Test
public void showAllUsersDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
List <User > list = userDao .showAllUsers ();
for (User user : list ) {
System .out .println (user );
}
}
@ Test
public void updateUsersDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
User user = new User ("1024" , "tests" , "ttestword" ,
"0" , "xx@mail.com" , "88" , "200" , true );
int num = userDao .updateUserInfo (user );
System .out .println (num == 1 );
}
测试结果
: 通过
@ Test
public void findInfoByEmpnoDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
String empno = "2001" ;
User use = userDao .findInfoByEmpno (empno );
System .out .println (use );
}
测试结果
: 通过
@ Test
public void findDepnameByDepnoDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
String depName = userDao .findDepnameByDepno ("100" );
System .out .println (depName );
}
测试结果
: 通过
@ Test
public void addANewUserDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
User user = new User ("2333" , "yyx2" , "1" ,
"10" , "xx@mail.com" , "88" , "200" , true );
int i = userDao .addANewUser (user );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void countAllUsersDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
int sum = userDao .countAllUsers ();
System .out .println (sum );
}
测试结果
: 通过
@ Test
public void deleteAUserDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
int sum = userDao .deleteAUser ("2333" );
System .out .println (sum );
}
测试结果
: 通过
@ Test
public void findUserByDepnoDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
List <User > list = userDao .findUserByDepno ("200" );
try {
for (User u : list ) {
System .out .println (u );
}
} catch (Exception e ) {
System .out .println (e );
}
}
测试结果
: 通过
@ Test
public void showDepartmentInfoDao () {
CompanyDao companyDao = new CompanyDaoImpl ();
List <DepartmentInfo > list = companyDao .showDepartmentInfo ("400" );
try {
for (DepartmentInfo u : list ) {
System .out .println (u );
}
} catch (Exception e ) {
System .out .println (e );
}
}
测试结果
: 通过
@ Test
public void countUsersByDepDao () {
UserDao userDao = (UserDao ) ac .getBean ("userDao" );
int sum = userDao .countUsersByDep ("200" );
System .out .println (sum );
}
测试结果
: 通过
@ Test
public void showCmpInfoDao () {
CompanyDao companyDao = new CompanyDaoImpl ();
List <Company > list = companyDao .showCmpInfo ();
System .out .println (list );
}
测试结果
: 通过
1.1.13 从excel中读取用户信息 测试通过
@ Test
public void readUsersFromXls () {
List <User > list = null ;
try {
list = FileUtils .readUsersFromXls ("/Users/jesse/Desktop/inputusers.xls" );
} catch (IOException e ) {
e .printStackTrace ();
}
if (list != null ) {
for (User user : list ) {
System .out .println (user );
}
}
}
测试结果
: 通过
@ Test
public void showAllUsersService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
for (User user : userService .showAllUsers ()) {
System .out .println (user );
}
}
测试结果
: 通过
@ Test
public void updateUsersService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
User user = new User ("1024" , "service" , "ttestword" ,
"0" , "xx@mail.com" , "88" , "200" , true );
int num = userService .updateUserInfo (user );
System .out .println (num == 1 );
}
测试结果
: 通过
@ Test
public void findInfoByEmpnoService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
String empno = "2001" ;
User use = userService .findInfoByEmpno (empno );
System .out .println (use );
}
测试结果
: 通过
@ Test
public void findDepnameByDepnoService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
String depno = "200" ;
String depname = userService .findDepnameByDepno (depno );
System .out .println (depname );
}
测试结果
: 通过
@ Test
public void countAllUsersService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
int sum = userService .countAllUsers ();
System .out .println (sum );
}
测试结果
: 通过
@ Test
public void addANewUserService () {
UserService userService = ac .getBean ("userService" , UserServiceImpl .class );
User user = new User ("1024" , "yyxService" , "1" ,
"10" , "xx@mail.com" , "88" , "200" , true );
int i = userService .addANewUser (user );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void deleteAUserService () {
UserService userService = ac .getBean ("userService" ,
UserServiceImpl .class );
int num = userService .deleteAUser ("1025" );
System .out .println (num == 1 );
}
测试结果
: 通过
@ Test
public void findUserByDepnoService () {
UserService userService = ac .getBean ("userService" , UserServiceImpl .class );
List <User > list = userService .findUserByDepno ("200" );
try {
for (User u : list ) {
System .out .println (u );
}
} catch (Exception e ) {
e .printStackTrace ();
}
}
测试结果
: 通过
@ Test
public void showDepartmentInfoService () {
CompanyService companyService = new CompanyServiceImpl ();
ArrayList <DepartmentInfo > list = companyService .showDepartmentInfo ("200" );
try {
for (DepartmentInfo u : list ) {
System .out .println (u );
}
} catch (Exception e ) {
System .out .println (e );
}
}
测试结果
: 通过
1.3 排班(arrangement)相关Dao层测试
@ Test
public void showAllTurnoutToManagerDao () {
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
List <TurnoutManager > turnoutManagers = arrangeDao .showAllTurnoutToManager ();
System .out .println (turnoutManagers );
for (TurnoutManager t : turnoutManagers ) {
System .out .println (t );
}
}
测试结果
: 通过
@ Test
public void showUsersTurnoutByMonthToManagerDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
String time = "2020-11-01 00:00:00" ;
List <TurnoutManager > turnoutManagers = arrangeDao .showUsersTurnoutByMonthToManager (time );
for (TurnoutManager t : turnoutManagers ){
System .out .println (t );
}
}
测试结果
: 通过
1.3.3 按月度显示某个员工的所有排班情况 测试通过
@ Test
public void showAUserTurnoutByMonthToManagerDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
String empno = "2001" ;
String time = "2020-05-01 00:00:00" ;
List <TurnoutManager > turnoutManagers = arrangeDao .showAUserTurnoutByMonthToManager (empno , time );
for (TurnoutManager t : turnoutManagers ){
System .out .println (t );
System .out .println (t .getArrno ());
System .out .println (t .getEmpno ());
System .out .println (t .getStart ());
System .out .println (t .getEnd ());
System .out .println (t .getRlstart ());
System .out .println (t .getRlend ());
}
}
测试结果
: 通过
@ Test
public void showAUserAllTurnoutToManagerDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
String empno = "2001" ;
List <TurnoutManager > turnoutManagers = arrangeDao .showAUserAllTurnoutToManager (empno );
for (TurnoutManager t : turnoutManagers ){
System .out .println (t );
}
}
测试结果
: 通过
@ Test
public void addNewArrangementDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
TurnoutManager t1 = new TurnoutManager ();
t1 .setEmpno ("1001" );
t1 .setStart (Timestamp .valueOf ("2020-05-12 08:45:48" ));
t1 .setEnd (Timestamp .valueOf ("2020-05-12 17:45:48" ));
t1 .setChecktypename ("30" );
t1 .setIsover (false );
t1 .setIstemporary (false );
System .out .println (t1 .getStart ());
System .out .println (t1 .getEnd ());
int i = arrangeDao .addNewArrangement (t1 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void showAllTurnoutToInteDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
List <TurnoutManager > turnoutInte = arrangeDao .showAllTurnoutToInte ("100" );
System .out .println (turnoutInte );
for (TurnoutManager t : turnoutInte ) {
System .out .println (t );
}
}
测试结果
: 通过
1.3.7 以部门为单位获取没有被批准的请假 测试通过
@ Test
public void showLeaveApplyByDepDao (){
ArrangeDao arrangeDao = new ArrangeDaoImpl ();
List <LeaveApply > list = arrangeDao .showLeaveApplyByDep ("200" );
System .out .println (list );
for (LeaveApply t : list ) {
System .out .println (t );
}
}
测试结果
: 通过
1.3.8 更新arrangement表中的某人的某个时间段排班的isleave为1, 表示该段排班请假了 测试通过
@ Test
public void updateIsapplyArrangeDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
int num = arrangeDao .updateIsLeaveArrange ("1" ,
"2020-05-01 00:00:00" , "2020-06-01 00:00:00" );
System .out .println (num == 1 );
}
测试结果
: 通过
@ Test
public void showAUserLeaveApply (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
LeaveApply leaveApply = arrangeDao .showAUserLeaveApply (10000 );
System .out .println (leaveApply );
}
测试结果
: 通过
@ Test
public void deleteArrByArrnoDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
int i = arrangeDao .deleteArrByArrno (1136 );
System .out .println (i == 1 );
}
测试结果
: 通过
1.3.11 获取某个员工在某个区间内的出勤情况 测试通过
@ Test
public void showAUserTurnoutBetweenDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
List <TurnoutManager > list = arrangeDao .showAUserTurnoutBetween (
"2002" , "2020-05-03 08:45:48" , "2020-05-13 08:40:48" );
for (TurnoutManager turnoutManager : list ) {
System .out .println (turnoutManager );
}
}
测试结果
: 通过
@ Test
public void updateIsApplyOverDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
int i = arrangeDao .updateIsApplyOver (10009 , 1 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void showOverApplyByOvernoDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
OverApply overApply = arrangeDao .showOverApplyByOverno (10009 );
System .out .println (overApply );
}
测试结果
: 通过
@ Test
public void showApprovedLeaveByEmpnoDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
List <LeaveApply > list = arrangeDao .showApprovedLeaveByEmpno ("2002" );
if (list != null ) {
for (LeaveApply li : list ) {
System .out .println (li );
}
}
}
测试结果
: 通过
@ Test
public void countUnapprovedLeaveByDepDao (){
ArrangeDaoImpl arrangeDao = new ArrangeDaoImpl ();
Integer sum = arrangeDao .countUnapprovedLeaveByDep ("200" );
System .out .println (sum );
}
测试结果
: 通过
1.4 排班(arrangement)相关Service层测试
@ Test
public void showAllTurnoutToManagerService () {
ArrangeService arrangeService = new ArrangeServiceImpl ();
List <TurnoutManagerFront > turnoutManagers = arrangeService .showAllTurnoutToManager ();
try {
for (TurnoutManagerFront t : turnoutManagers ) {
System .out .println (t );
}
} catch (Exception e ) {
System .out .println (e );
}
}
测试结果
: 通过
1.4.2 显示某个月的所有排班(以六月测试) 测试通过
@ Test
public void showUsersTurnoutByMonthToManagerService (){
ArrangeService arrangeService = new ArrangeServiceImpl ();
String time = "2020-06-01 00:00:00" ;
List <TurnoutManagerFront > turnoutManagers = arrangeService .showUsersTurnoutByMonthToManager (time );
try {
for (TurnoutManagerFront t : turnoutManagers ) {
System .out .println (t );
}
} catch (Exception e ) {
System .out .println (e );
}
}
测试结果
: 通过
@ Test
public void showAUserAllTurnoutToManagerService (){
ArrangeService arrangeService = new ArrangeServiceImpl ();
String empno = "2001" ;
List <TurnoutManagerFront > turnoutManagerFront = arrangeService .showAUserTurnoutToManager (empno );
for (TurnoutManagerFront t : turnoutManagerFront ){
System .out .println (t );
}
}
测试结果
: 通过
@ Test
public void showAUserTurnoutByMonthToManagerService (){
ArrangeService arrangeService = new ArrangeServiceImpl ();
String empno = "2002" ;
String time = "2020-05-01 00:00:00" ;
List <TurnoutManagerFront > turnoutManagerFront =
arrangeService .showAUserTurnoutByMonthToManager (empno , time );
for (TurnoutManagerFront t : turnoutManagerFront ){
System .out .println (t );
}
}
测试结果
: 通过
@ Test
public void showLeaveApplyByDepService (){
ArrangeService arrangeService = new ArrangeServiceImpl ();
List <LeaveApply > list = arrangeService .showLeaveApplyByDep ("200" );
for (LeaveApply l : list ){
System .out .println (l );
}
}
测试结果
: 通过
@ Test
public void disagreeLeaveApplyService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .disagreeLeaveApply (10026 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void deleteArrByArrnoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .deleteArrByArrno (1071 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void updateArrByArrnoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
TurnoutManager turnoutManager = new TurnoutManager ();
turnoutManager .setArrno (1034 );
turnoutManager .setStart (Timestamp .valueOf ("2020-08-05 08:17:00.0" ));
turnoutManager .setEnd (Timestamp .valueOf ("2020-08-05 20:17:00.0" ));
turnoutManager .setIsover (false );
int i = arrangeService .updateArrByArrno (turnoutManager );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void addAffectedArrService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .addAffectedArr (3309 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void deleteAllAffectedArrService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .deleteAllAffectedArr ();
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void showArrByArrnoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
TurnoutManagerFront turnoutManagerFront = arrangeService .showArrByArrno (1121 );
System .out .println (turnoutManagerFront );
}
测试结果
: 通过
@ Test
public void deleteAffectedArrByArrnoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .deleteAffectedArrByArrno (3309 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void showLeaveApplyEmpno (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
List <LeaveApply > list = arrangeService .showLeaveApplyEmpno ("2002" );
for (LeaveApply leaveApply : list ) {
System .out .println (leaveApply );
}
}
测试结果
: 通过
@ Test
public void addNewLeaveApplyService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
LeaveApply leaveApply = new LeaveApply ();
leaveApply .setEmpno ("2002" );
leaveApply .setStart (Timestamp .valueOf ("2020-08-05 08:17:00" ));
leaveApply .setEnd (Timestamp .valueOf ("2020-08-05 20:17:00" ));
leaveApply .setReason ("赶集去了" );
int i = arrangeService .addNewLeaveApply (leaveApply );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void deleteLeaveApplyByLeavenoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
int i = arrangeService .deleteLeaveApplyByLeaveno (10030 );
System .out .println (i == 1 );
}
测试结果
: 通过
@ Test
public void showOverApplyByEmpnoService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
List <OverApply > overApplies = arrangeService .showOverApplyByEmpno ("2002" );
for (OverApply overApply : overApplies ) {
System .out .println (overApply );
}
}
测试结果
: 通过
@ Test
public void showUserArrADayService (){
ArrangeServiceImpl arrangeService = new ArrangeServiceImpl ();
List <TurnoutManagerFront > list = arrangeService .showUserArrADay ("2002" ,
(new Timestamp (System .currentTimeMillis ()).toString ()));
for (TurnoutManagerFront t : list ) {
System .out .println (t );
}
}
测试结果
: 通过
1.5.1 检测是否有相应需要主管审批的请假或加班线程 测试通过
new Thread (new Runnable () {
@ Override
public void run () {
String depno = u .getDepno ();
ArrangeServlet .count = 0 ;//主管登录后肯定要开启先收到提醒
isInteLogin = true ;
while (isInteLogin ) {
String name = Thread .currentThread ().getName ();
System .out .println ("扫描待申请线程开启:" + name );
int i = arrangeService .countUnapprovedByDep (depno );
UserServlet .isApply = i != 0 ;
System .out .println ("当前是否有申请:" + UserServlet .isApply );
try {
Thread .sleep (1000 );
} catch (InterruptedException e ) {
System .out .println (e );
}
}
}
}).start ();
无需任何需要审批的情况
存在需要审批的请假或加班,转为由false转为true,该线程运行未发现冲突
1.5.2 扫描两个上传到服务器的文件夹,定期清理文件的线程 测试通过
new Thread (new Runnable () {
@ Override
public void run () {
String rootPath = request .getServletContext ().getRealPath ("/WEB-INF" );
while (isLogin ) {
synchronized (User .class ) {
File xlsFile = new File (rootPath + "/uploadxls" );
File imgFile = new File (rootPath + "/userimg" );
File [] files = xlsFile .listFiles ();
if (files != null ) {
for (File f : files ) {
f .delete ();
}
}
files = imgFile .listFiles ();
if (files != null ) {
for (File f : files ) {
f .delete ();
}
}
}
String name = Thread .currentThread ().getName ();
System .out .println ("进行文件缓存清理" + name );
//设定线程运行间隔时间
try {
Thread .sleep (10000 );
} catch (InterruptedException e ) {
e .printStackTrace ();
}
}
}
}).start ();
登录后开启线程
上传文件到服务器,10s以后被该线程自动清理
首页登录界面
输入账号密码
登录成功跳转到相应用户类型的主页
账号密码错误
注册界面
点击发送邮箱验证码时,未输入邮箱会提醒
填写邮箱后会发送验证码
进入邮箱可以看到发送的验证码
若两次输入密码不一致会警示
若验证码不正确或者未发送,也会警示(上面邮箱可以看到正确验证码是3020)
两次输入的密码都一样且验证码正确,注册成功
在此界面可以直接进行个人信息修改
可以看到能够显示企业内当前所有员工
修改相应的信息之后将信息选中,点击更新选中,更新成功
选中“算法部门”进行测试
点击新增用户,输入新增的用户信息
点击“确认新增”后回到所有员工界面,可以看到新增成功
点击“删除选中”后系统自动刷新页面,可以看到成功删除
点击“批量导入用户信息”,看到弹出的文件选择框
选择文件
选择完毕后提交文件,系统回到员工界面可以看到添加的用户和excel文件中的用户信息一致,用户批量导入成功
点击公司信息可以看到公司信息
点击班次信息可以看到所有部门所有班次
选择某个月份,查看公司该月所有的班次信息
选择某个月份和部门,查看该部门该月所有的班次信息
查看某员工某月的排班
查看安排的临时排班的打卡情况
点击“创建临时排班”,创建临时排班,会在这段时间内所有员工(除请假外)安排上一个临时加班
观察到所有员工都被安排一个临时加班,除工号2002的员工以为,因为他此时请假
工号为2002的员工的请假申请(isapply=1表示是被批准的请假),该员工请假的时间正好在刚刚安排的临时加班中
主管用户登录后会先提醒是否有需要审批的排班
个人信息与部门信息修改逻辑与经理相同,已测试
进入审批界面后显示本部门所有需要审批的请假
点击批准,如果请假期间有排班,提醒主管可以去修改被影响的排班
显示被请假影响的排班
选中可删除排班,删除成功
选中修改被影响排班,修改成功
点击不进行重新排班,回到审批页面
测试驳回请假,可以看到点击驳回后。没有请假申请了
在子菜单中点击加班申请,显示本部门所有加班申请
选中后点击批准,确定后会增加相应的排班
到“班次安排”界面可以看到增加的排班
点击班次安排可以看到本部门所有班次安排
查看某一位员工所有月份的班次
查看某个员工某个月份的排班
选中排班,点击删除可以将排班删除,可以看到排班号1135和1031的排班被删除
选中排班点击更新选中,表格上方弹出该排班的信息可以进行点击修改,修改成功。
点击增加排班,在表格上方能显示输入框,输入一个排班,点击确定,可以看到新增,测试成功。
导出当前显示的排班为excel格式,点击“导出当前”,浏览器下载文件,打开文件与浏览器内的数据对比,完全一致,测试通过
点击批量添加,进入到批量添加页面
多选几个员工,再选择连续的天数和每天的上下班时间以及是否是加班,点击添加。
进入排班界面可以看到批量添加的排班(只截图部分),测试成功
点击“导入排班”,选择一个xls文件,读取文件中的排班信息后,查看。可以看到添加成功,测试通过。
点击出勤信息,进入到出勤信息界面,可以看到本部门员工的实际上班时间和打卡情况,是否迟到等信息
输入工号查该员工所有月份的出勤信息,测试成功
输入员工号和月份查看该员工在该月的出勤信息,测试通过
个人信息修改逻辑已测试,此处测试上传本人照片到百度AI的后台,打卡的时候进行人脸识别用
可以看到在百度ai的后台库中有该照片
点击班次安排,看到登录员工的所有班次,可以按月份选择查看,测试通过
点击出勤信息,看到登录员工的所有出勤信息,可以按月份选择查看,测试通过
点击申请的请假界面,可以看到自己已经申请的请假,包括被驳回的,已批准的,待批准的
选中申请的请假,点击取消申请,可以看到申请不存在,测试通过
点击“申请请假”,可以看到会拉下请假申请框
填写请假申请,点击确定,会看到自己的请假申请界面会多出一条请假申请,同时当前部门的主管会收到有新的请假需要审批的通知
选中请假申请,点击销假,选中的申请发送到主管进行批准,测试通过
点击进入打卡界面,根据员工的设置,弹出提醒今日的下一条排班的上下班时间
点击确认后可以看到今日的所有排班
点击“开始打卡”,再点击“开启摄像头”。看到摄像头正常运行
点击“拍照打卡”,可以看到本人脸识别成功
查看打卡时间和打卡类型为正确,表明打卡成功
测试用手遮挡摄像头,点击“拍照打卡”,结果失败。符合预期。
重新使用正确的脸部打卡,打卡成功,表明完成一条排班了。随即提示下一条排班的时间