├── .gitignore ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── README.md ├── mvnw ├── mvnw.cmd ├── pom.xml ├── sql └── oa.sql └── src ├── main ├── java │ └── com │ │ └── yj │ │ └── oa │ │ ├── OaApplication.java │ │ ├── common │ │ ├── conf │ │ │ ├── MultipartConfig.java │ │ │ ├── StringDateToDateConfig.java │ │ │ ├── ThreaPoolConf.java │ │ │ └── webConfig.java │ │ ├── constant │ │ │ ├── Constants.java │ │ │ └── CsEnum.java │ │ ├── exception │ │ │ ├── file │ │ │ │ ├── FileNameLengthException.java │ │ │ │ ├── FileSizeException.java │ │ │ │ ├── MyFileDownException.java │ │ │ │ └── MyFileUploadException.java │ │ │ └── permission │ │ │ │ └── PermisExceptionResolver.java │ │ └── utils │ │ │ ├── AjaxUtis.java │ │ │ ├── CharsetKit.java │ │ │ ├── Convert.java │ │ │ ├── DateUtils.java │ │ │ ├── HttpHeaderUtil.java │ │ │ ├── MapDataUtil.java │ │ │ ├── ServletUtils.java │ │ │ ├── StrFormatter.java │ │ │ ├── StringUtils.java │ │ │ ├── file │ │ │ ├── FileUtil.java │ │ │ └── UploadFile.java │ │ │ ├── ftp │ │ │ └── FtpUtil.java │ │ │ ├── myThread │ │ │ └── MyAttendCountThread.java │ │ │ └── shiro │ │ │ ├── Encryption.java │ │ │ └── ShiroUtils.java │ │ ├── framework │ │ ├── annotation │ │ │ └── Operlog.java │ │ ├── aspect │ │ │ ├── SystemLogAspect.java │ │ │ └── enums │ │ │ │ ├── OperLogStatusEnum.java │ │ │ │ └── OperLogTypeEnum.java │ │ ├── shiro │ │ │ ├── FilterChainDefinitionMapBuider.java │ │ │ ├── LoginService.java │ │ │ ├── MyLogoutFilter.java │ │ │ ├── MySessionExpiredFilter.java │ │ │ ├── ShiroConfig.java │ │ │ └── UserRealm.java │ │ └── web │ │ │ ├── controller │ │ │ ├── BaseController.java │ │ │ └── defaulView │ │ │ │ └── DefaultView.java │ │ │ ├── page │ │ │ ├── PageDomain.java │ │ │ ├── TableDataInfo.java │ │ │ └── TableSupport.java │ │ │ ├── po │ │ │ ├── AjaxResult.java │ │ │ └── BasePo.java │ │ │ └── service │ │ │ └── PermissionService.java │ │ └── project │ │ ├── controller │ │ ├── AttendController.java │ │ ├── AttendCountController.java │ │ ├── DeptController.java │ │ ├── FileController.java │ │ ├── IndexController.java │ │ ├── LoginController.java │ │ ├── MeetController.java │ │ ├── MeetRoomController.java │ │ ├── NoteController.java │ │ ├── NoticeController.java │ │ ├── OperLogController.java │ │ ├── PermissionController.java │ │ ├── PositionController.java │ │ ├── RoleController.java │ │ ├── ScheduleController.java │ │ ├── TelController.java │ │ ├── UserController.java │ │ ├── VerificationCode │ │ │ └── Controller.java │ │ ├── WorkTimeController.java │ │ └── act │ │ │ ├── ActActiInstController.java │ │ │ ├── ActApplyRoomController.java │ │ │ ├── ActCommonController.java │ │ │ ├── ActHiTaskController.java │ │ │ ├── ActTaskController.java │ │ │ └── LeaveFormController.java │ │ ├── mapper │ │ ├── ActHiActinstMapper.java │ │ ├── ActHiProcinstMapper.java │ │ ├── ActHiTaskInstMapper.java │ │ ├── ActTaskMapper.java │ │ ├── ApplyRoomFormMapper.java │ │ ├── AttendCountMapper.java │ │ ├── AttendMapper.java │ │ ├── DeptMapper.java │ │ ├── FilesMapper.java │ │ ├── GuestBookMapper.java │ │ ├── LeaveFormMapper.java │ │ ├── MeetMapper.java │ │ ├── MeetingRoomMapper.java │ │ ├── NoteMapper.java │ │ ├── NoticeMapper.java │ │ ├── OperLogMapper.java │ │ ├── PermissionMapper.java │ │ ├── PositionMapper.java │ │ ├── RoleMapper.java │ │ ├── RoleMenuMapper.java │ │ ├── RolePermissionMapper.java │ │ ├── ScheduleMapper.java │ │ ├── ScheduleUserMapper.java │ │ ├── TelMapper.java │ │ ├── UserMapper.java │ │ ├── UserMeetMapper.java │ │ ├── UserRoleMapper.java │ │ └── WorkTimeMapper.java │ │ ├── po │ │ ├── ActHiActinst.java │ │ ├── ActHiProcinst.java │ │ ├── ActHiTaskInst.java │ │ ├── ActTask.java │ │ ├── ApplyRoomForm.java │ │ ├── Attend.java │ │ ├── AttendCount.java │ │ ├── Dept.java │ │ ├── Files.java │ │ ├── GuestBook.java │ │ ├── LeaveForm.java │ │ ├── Meet.java │ │ ├── MeetingRoom.java │ │ ├── Note.java │ │ ├── Notice.java │ │ ├── OperLog.java │ │ ├── Permission.java │ │ ├── Position.java │ │ ├── Role.java │ │ ├── RoleMenu.java │ │ ├── RolePermission.java │ │ ├── Schedule.java │ │ ├── ScheduleUser.java │ │ ├── Tel.java │ │ ├── User.java │ │ ├── UserMeet.java │ │ ├── UserRole.java │ │ ├── VerificationCode │ │ │ └── ValidateCodeUtil.java │ │ ├── WorkTime.java │ │ ├── Workschedul.java │ │ └── dto │ │ │ ├── MenuTree.java │ │ │ └── PermTree.java │ │ └── service │ │ ├── ACT │ │ ├── actUtil │ │ │ └── ActUtil.java │ │ ├── applyRoom │ │ │ ├── ActApplyRoomFormServiceImpl.java │ │ │ └── IActApplyRoomFormService.java │ │ ├── hiActInst │ │ │ ├── ActHiActInstServiceImpl.java │ │ │ └── IActHiActInstService.java │ │ ├── hiTaskInst │ │ │ ├── ActHiTasckinstServiceImpl.java │ │ │ └── IActHiTaskinistService.java │ │ ├── hiprocInst │ │ │ ├── ActHiProcinstServiceImpl.java │ │ │ └── IActHiProcinstService.java │ │ └── task │ │ │ ├── ActTaskServiceImpl.java │ │ │ └── IActTaskService.java │ │ ├── attend │ │ ├── AttendServiceImpl.java │ │ └── IAttendService.java │ │ ├── attendCount │ │ ├── AttendCountServiceImpl.java │ │ └── IAttendCountService.java │ │ ├── dept │ │ ├── DeptServiceImpl.java │ │ └── IDeptService.java │ │ ├── file │ │ ├── IFileService.java │ │ └── IFileServiceIml.java │ │ ├── leavForm │ │ ├── ILeavFormService.java │ │ └── LeavFormServiceImpl.java │ │ ├── meet │ │ ├── IMeetService.java │ │ └── MeetServiceImpl.java │ │ ├── meetRoom │ │ ├── IMeetingRoomService.java │ │ └── MeetingRoomServiceImpl.java │ │ ├── menu │ │ ├── IPermissionService.java │ │ └── PermissionServiceImpl.java │ │ ├── note │ │ ├── INoteService.java │ │ └── NoteServiceImpl.java │ │ ├── notice │ │ ├── INoticeService.java │ │ └── NoticeServiceImpl.java │ │ ├── operlog │ │ ├── IOperLogService.java │ │ └── OperLogServiceImpl.java │ │ ├── position │ │ ├── IPositionService.java │ │ └── PositionServiceImpl.java │ │ ├── role │ │ ├── IRoleService.java │ │ └── RoleServiceImpl.java │ │ ├── schedule │ │ ├── IScheduleService.java │ │ └── ScheduleServiceImpl.java │ │ ├── tel │ │ ├── ITelService.java │ │ └── TelServiceImpl.java │ │ ├── user │ │ ├── IUserService.java │ │ └── UserServiceImpl.java │ │ └── workTime │ │ ├── IWorkTimeService.java │ │ ├── WorkTimeServiceImpl.java │ │ └── WorkTimeUtils.java └── resources │ ├── activiti.cf.xml │ ├── application.yml │ ├── ehcache.xml │ ├── mapper │ ├── AttendCountMapper.xml │ ├── AttendMapper.xml │ ├── DeptMapper.xml │ ├── FilesMapper.xml │ ├── GuestBookMapper.xml │ ├── MeetMapper.xml │ ├── MeetingRoomMapper.xml │ ├── NoteMapper.xml │ ├── NoticeMapper.xml │ ├── OperLogMapper.xml │ ├── PermissionMapper.xml │ ├── PositionMapper.xml │ ├── RoleMapper.xml │ ├── RoleMenuMapper.xml │ ├── RolePermissionMapper.xml │ ├── ScheduleMapper.xml │ ├── ScheduleUserMapper.xml │ ├── TelMapper.xml │ ├── UserMapper.xml │ ├── UserMeetMapper.xml │ ├── UserRoleMapper.xml │ ├── WorkTimeMapper.xml │ ├── WorkschedulMapper.xml │ └── act │ │ ├── ActHiActinstMapper.xml │ │ ├── ActHiProcinstMapper.xml │ │ ├── ActHiTaskInstMapper.xml │ │ ├── ActTaskMapper.xml │ │ ├── ApplyRoomFormMapper.xml │ │ └── LeaveFormMapper.xml │ ├── processes │ ├── apply.bpmn │ ├── apply.png │ ├── apply.zip │ ├── leave.bpmn │ ├── leave.png │ └── leave.zip │ ├── static │ ├── ajax │ │ └── libs │ │ │ ├── beautifyhtml │ │ │ └── beautifyhtml.js │ │ │ ├── blockUI │ │ │ └── jquery.blockUI.js │ │ │ ├── bootstrap-table │ │ │ ├── .DS_Store │ │ │ ├── bootstrap-table.min.css │ │ │ ├── bootstrap-table.min.js │ │ │ ├── extensions │ │ │ │ ├── bootstrap-table-treegrid.js │ │ │ │ ├── editable │ │ │ │ │ ├── bootstrap-table-editable.js │ │ │ │ │ └── bootstrap-table-editable.min.js │ │ │ │ ├── export │ │ │ │ │ ├── bootstrap-table-export.js │ │ │ │ │ └── tableExport.js │ │ │ │ ├── mobile │ │ │ │ │ ├── bootstrap-table-mobile.js │ │ │ │ │ └── bootstrap-table-mobile.min.js │ │ │ │ └── toolbar │ │ │ │ │ ├── bootstrap-table-toolbar.js │ │ │ │ │ └── bootstrap-table-toolbar.min.js │ │ │ └── locale │ │ │ │ ├── bootstrap-table-zh-CN.js │ │ │ │ └── bootstrap-table-zh-CN.min.js │ │ │ ├── bootstrap-treetable │ │ │ ├── bootstrap-treetable.css │ │ │ └── bootstrap-treetable.js │ │ │ ├── cropbox │ │ │ ├── cropbox.css │ │ │ └── cropbox.js │ │ │ ├── datapicker │ │ │ ├── bootstrap-datepicker.js │ │ │ └── datepicker3.css │ │ │ ├── fullscreen │ │ │ └── jquery.fullscreen.js │ │ │ ├── iCheck │ │ │ ├── custom.css │ │ │ ├── green-login.png │ │ │ ├── green.png │ │ │ ├── green@2x.png │ │ │ └── icheck.min.js │ │ │ ├── jqTreeGrid │ │ │ ├── jquery.treegrid.css │ │ │ ├── jquery.treegrid.extension.js │ │ │ ├── jquery.treegrid.js │ │ │ ├── jquery.treegrid.min.js │ │ │ └── tree.table.js │ │ │ ├── jquery-layout │ │ │ ├── jquery.layout-latest.css │ │ │ └── jquery.layout-latest.js │ │ │ ├── jquery-ztree │ │ │ └── 3.5 │ │ │ │ ├── css │ │ │ │ ├── default │ │ │ │ │ ├── img │ │ │ │ │ │ ├── diy │ │ │ │ │ │ │ ├── 1_close.png │ │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ │ └── 9.png │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ │ ├── metro │ │ │ │ │ ├── img │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ ├── line_conn.png │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ ├── metro.gif │ │ │ │ │ │ └── metro.png │ │ │ │ │ └── zTreeStyle.css │ │ │ │ └── simple │ │ │ │ │ ├── img │ │ │ │ │ ├── left_menu.gif │ │ │ │ │ ├── left_menu.png │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ ├── loading.gif │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ └── zTreeStyle.css │ │ │ │ ├── js │ │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ │ ├── jquery.ztree.core-3.5.js │ │ │ │ ├── jquery.ztree.excheck-3.5.js │ │ │ │ ├── jquery.ztree.exedit-3.5.js │ │ │ │ └── jquery.ztree.exhide-3.5.js │ │ │ │ └── log v3.x.txt │ │ │ ├── layer │ │ │ ├── .DS_Store │ │ │ ├── layer.min.js │ │ │ ├── mobile │ │ │ │ ├── layer.js │ │ │ │ └── need │ │ │ │ │ └── layer.css │ │ │ └── theme │ │ │ │ └── default │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1.gif │ │ │ │ └── loading-2.gif │ │ │ ├── layui │ │ │ ├── css │ │ │ │ └── modules │ │ │ │ │ └── laydate │ │ │ │ │ └── default │ │ │ │ │ ├── laydate.css │ │ │ │ │ └── layui.css │ │ │ ├── lay │ │ │ │ └── modules │ │ │ │ │ ├── laydate.js │ │ │ │ │ └── layer.js │ │ │ └── layui.js │ │ │ ├── select │ │ │ ├── select2.css │ │ │ └── select2.js │ │ │ ├── summernote │ │ │ ├── font │ │ │ │ └── summernote.woff │ │ │ ├── summernote-0.8.8.css │ │ │ ├── summernote-bs3.css │ │ │ ├── summernote-zh-CN.js │ │ │ ├── summernote-zh-CN.min.js │ │ │ ├── summernote.css │ │ │ ├── summernote.js │ │ │ └── summernote.min.js │ │ │ ├── validate │ │ │ ├── additional-methods.min.js │ │ │ ├── jquery.validate.extend.js │ │ │ ├── jquery.validate.min.js │ │ │ └── messages_zh.min.js │ │ │ └── zTree │ │ │ ├── img │ │ │ ├── left_menu.gif │ │ │ ├── left_menu.png │ │ │ ├── line_conn.gif │ │ │ ├── loading.gif │ │ │ ├── zTreeStandard.gif │ │ │ └── zTreeStandard.png │ │ │ ├── jquery.ztree.all-3.5.js │ │ │ └── zTreeStyle.css │ ├── css │ │ ├── animate.css │ │ ├── bootstrap-rtl.css │ │ ├── bootstrap.min.css │ │ ├── checkbox.css │ │ ├── font-awesome.css │ │ ├── font-awesome.min.css │ │ ├── fonts │ │ │ ├── fontawesome-webfont93e3.eot │ │ │ ├── fontawesome-webfont93e3.svg │ │ │ ├── fontawesome-webfont93e3.ttf │ │ │ ├── fontawesome-webfont93e3.woff │ │ │ ├── fontawesome-webfont93e3.woff2 │ │ │ ├── fontawesome-webfontd41d.eot │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ ├── glyphicons-halflings-regular.woff2 │ │ │ └── glyphicons-halflings-regulard41d.eot │ │ ├── layui.css │ │ ├── layui.mobile.css │ │ ├── login.css │ │ ├── login.min.css │ │ ├── main │ │ │ ├── animate.min.css │ │ │ ├── bootstrap.min14ed.css │ │ │ ├── font-awesome.min93e3.css │ │ │ └── style.min862f.css │ │ ├── patterns │ │ │ ├── header-profile-skin-blue.png │ │ │ ├── header-profile-skin-yellow.png │ │ │ ├── header-profile.png │ │ │ └── shattered.png │ │ └── style.css │ ├── favicon.ico │ ├── file │ │ └── rml.txt │ ├── fonts │ │ ├── FontAwesome.otf │ │ ├── Simple-Line-Icons.woff2 │ │ ├── fontawesome-webfont.eot │ │ ├── fontawesome-webfont.svg │ │ ├── fontawesome-webfont.ttf │ │ ├── fontawesome-webfont.woff │ │ ├── fontawesome-webfont.woff2 │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ ├── glyphicons-halflings-regular.woff2 │ │ └── icomoon │ │ │ ├── icomoon.eot │ │ │ ├── icomoon.svg │ │ │ ├── icomoon.ttf │ │ │ └── icomoon.woff │ ├── img │ │ ├── .DS_Store │ │ ├── attendlock.jpg │ │ ├── bg.png │ │ ├── commonuserimg.jpg │ │ ├── icons.png │ │ ├── loading-upload.gif │ │ ├── loading.gif │ │ ├── lock.png │ │ ├── locked.png │ │ ├── login-background.jpg │ │ ├── progress.png │ │ ├── qr_code.png │ │ ├── sprite-skin-flat.png │ │ ├── success.png │ │ ├── user.png │ │ └── webuploader.png │ ├── js │ │ ├── .DS_Store │ │ ├── bootstrap.min.js │ │ ├── jquery-ui-1.10.4.min.js │ │ ├── jquery.min.js │ │ └── plugins │ │ │ ├── .DS_Store │ │ │ ├── fileinput │ │ │ ├── fileinput.js │ │ │ ├── fileinput.min.js │ │ │ ├── locales │ │ │ │ └── zh.js │ │ │ └── plugins │ │ │ │ ├── piexif.js │ │ │ │ ├── piexif.min.js │ │ │ │ ├── purify.js │ │ │ │ ├── purify.min.js │ │ │ │ ├── sortable.js │ │ │ │ └── sortable.min.js │ │ │ ├── metisMenu │ │ │ └── jquery.metisMenu.js │ │ │ └── slimscroll │ │ │ └── jquery.slimscroll.min.js │ └── ruoyi │ │ ├── css │ │ └── ry-ui.min.css │ │ ├── index.js │ │ ├── js │ │ ├── common.js │ │ └── ry-ui.min.js │ │ └── login.js │ └── templates │ ├── error │ ├── 404.html │ ├── 500.html │ └── unauth.html │ ├── include.html │ ├── index.html │ ├── login.html │ ├── main.html │ ├── main │ ├── editMeet.html │ └── editNotice.html │ ├── system │ ├── actHIActi │ │ └── actHiActi.html │ ├── actHiTask │ │ ├── actHiTask.html │ │ ├── editApplyRoomForm.html │ │ └── editLeaveForm.html │ ├── actTask │ │ ├── actTask.html │ │ ├── editApplyRoomForm.html │ │ └── editLeaveForm.html │ ├── applyRoomForm │ │ ├── applyRoom.html │ │ └── editApplyRoomForm.html │ ├── attend │ │ ├── attend.html │ │ └── edit.html │ ├── attendCount │ │ └── attendCount.html │ ├── dept │ │ ├── add.html │ │ ├── dept.html │ │ ├── edit.html │ │ └── tree.html │ ├── file │ │ ├── add.html │ │ └── file.html │ ├── leave │ │ ├── add.html │ │ ├── editLeaveForm.html │ │ └── leave.html │ ├── meet │ │ ├── add.html │ │ ├── edit.html │ │ └── meet.html │ ├── menu │ │ ├── add.html │ │ ├── edit.html │ │ ├── icon.html │ │ └── menu.html │ ├── note │ │ ├── add.html │ │ ├── edit.html │ │ └── note.html │ ├── notice │ │ ├── add.html │ │ ├── edit.html │ │ └── notice.html │ ├── operlog │ │ ├── edit.html │ │ └── operlog.html │ ├── post │ │ ├── add.html │ │ ├── edit.html │ │ └── post.html │ ├── processImg │ │ └── img.html │ ├── role │ │ ├── add.html │ │ ├── edit.html │ │ ├── editPower.html │ │ └── role.html │ ├── room │ │ ├── add.html │ │ ├── addApplyForm.html │ │ ├── edit.html │ │ └── room.html │ ├── schedule │ │ ├── add.html │ │ ├── edit.html │ │ ├── editMore.html │ │ └── schedule.html │ ├── tel │ │ └── tel.html │ ├── user │ │ ├── add.html │ │ ├── edit.html │ │ ├── profile │ │ │ ├── avatar.html │ │ │ ├── msg.html │ │ │ └── resetPwd.html │ │ ├── resetPwd.html │ │ └── user.html │ └── worktime │ │ ├── add.html │ │ ├── edit.html │ │ └── worktime.html │ └── vm │ ├── html │ ├── add.html.vm │ ├── edit.html.vm │ └── list.html.vm │ ├── java │ ├── Controller.java.vm │ ├── Mapper.java.vm │ ├── Service.java.vm │ ├── ServiceImpl.java.vm │ └── domain.java.vm │ ├── sql │ └── sql.vm │ └── xml │ └── Mapper.xml.vm └── test └── java └── com └── yj └── oa └── OaApplicationTests.java /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 1. # OA 2 | 3 | #### 项目介绍 4 | 5 | 基于 springboot+myvatis_+ mvc + activiti+quarts+quartz 写的一个办公企业管理系统 OA 6 | 7 | #### 软件架构 8 | 9 | springboot+myvatis_+ mvc + activiti+quarts+quartz 10 | 11 | #### 说明 12 | 13 | ##### 功能: 14 | 15 | 用户模块 日志模块 考勤模块 工作流模块 请假 岗位 会议申请 菜单 。。。 定时任务月末统计考勤状况 等功能 16 | 17 | 前端页面出致于:若依管理系统(https://github.com/WuJunJie521/RuoYiu) 18 | 19 | ##### 在线体验 20 | 21 | 地址: 管理员 账号:admin 密码:admin 22 | 23 | 领导角色演示账号/密码:manager、123456 24 | 25 | 员工角色演示账号密码:employee /123456 26 | 27 | 本人学生 希望浏览者能给点意见 28 | 29 | 截图: 30 | 31 | ![](F:\win桌面文件\Desktop\TIM截图20181020215618.png) 32 | 33 | ![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160612_c1838f04_1950427.png) 34 | 35 | ![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160618_3eb2697c_1950427.png) 36 | 37 | ![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160623_ebb47b4c_1950427.png)![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160630_3e20f629_1950427.png) 38 | 39 | ![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160639_3e04cc7d_1950427.png) 40 | 41 | ​ 42 | 43 | ![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160647_06e351a8_1950427.png)![输入图片说明](https://images.gitee.com/uploads/images/2018/1009/160652_86ac4442_1950427.png) 44 | 45 | #### 码云特技 46 | 47 | 1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md 48 | 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com/) 49 | 3. 你可以 这个地址来了解码云上的优秀开源项目 50 | 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 51 | 5. 码云官方提供的使用手册 52 | 6. 码云封面人物是一档用来展示码云会员风采的栏目 -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/conf/MultipartConfig.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.conf; 2 | 3 | import org.springframework.boot.web.servlet.MultipartConfigFactory; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import javax.servlet.MultipartConfigElement; 8 | 9 | /** 10 | * @author 永健 11 | * 配置文件上传大小 12 | */ 13 | @Configuration 14 | public class MultipartConfig{ 15 | @Bean 16 | MultipartConfigElement multipartConfigElement() 17 | { 18 | MultipartConfigFactory factory = new MultipartConfigFactory(); 19 | //文件最大 20 | factory.setMaxFileSize("10MB"); 21 | /// 设置总上传数据总大小 22 | factory.setMaxRequestSize("10MB"); 23 | return factory.createMultipartConfig(); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/conf/StringDateToDateConfig.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.conf; 2 | 3 | import org.springframework.core.convert.converter.Converter; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.text.DateFormat; 7 | import java.text.SimpleDateFormat; 8 | import java.util.ArrayList; 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | /** 13 | * @author 永健 14 | * 处理前端字符窜格式日期转换 15 | */ 16 | @Component 17 | public class StringDateToDateConfig implements Converter{ 18 | private static final List formarts = new ArrayList<>(4); 19 | 20 | static 21 | { 22 | formarts.add("yyyy-MM"); 23 | formarts.add("yyyy-MM-dd"); 24 | formarts.add("yyyy-MM-dd HH:mm"); 25 | formarts.add("yyyy-MM-dd HH:mm:ss"); 26 | } 27 | 28 | @Override 29 | public Date convert(String source) 30 | { 31 | String value = source.trim(); 32 | if ("".equals(value)) 33 | { 34 | return null; 35 | } 36 | if (source.matches("^\\d{4}-\\d{1,2}$")) 37 | { 38 | return parseDate(source, formarts.get(0)); 39 | } 40 | else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) 41 | { 42 | return parseDate(source, formarts.get(1)); 43 | } 44 | else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) 45 | { 46 | return parseDate(source, formarts.get(2)); 47 | } 48 | else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) 49 | { 50 | return parseDate(source, formarts.get(3)); 51 | } 52 | else 53 | { 54 | throw new IllegalArgumentException("Invalid boolean value '" + source + "'"); 55 | } 56 | } 57 | 58 | /** 59 | * 格式化日期 60 | * 61 | * @param dateStr String 字符型日期 62 | * @param format String 格式 63 | * 64 | * @return Date 日期 65 | */ 66 | public Date parseDate(String dateStr, String format) 67 | { 68 | Date date = null; 69 | try 70 | { 71 | 72 | DateFormat dateFormat = new SimpleDateFormat(format); 73 | date = dateFormat.parse(dateStr); 74 | } 75 | catch (Exception e) 76 | { 77 | 78 | } 79 | return date; 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/conf/ThreaPoolConf.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.conf; 2 | 3 | import org.springframework.beans.factory.annotation.Qualifier; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import java.util.concurrent.LinkedBlockingQueue; 8 | import java.util.concurrent.RejectedExecutionHandler; 9 | import java.util.concurrent.ThreadPoolExecutor; 10 | import java.util.concurrent.TimeUnit; 11 | 12 | /** 13 | * @author 永健 14 | * 线程池 15 | */ 16 | @Configuration 17 | public class ThreaPoolConf{ 18 | /** 核心线程数*/ 19 | private static final int CORE_POOL_SIZE= 2; 20 | /** 最大线程数*/ 21 | private static final int MAX_NUM_POOL_SIZE= 10; 22 | /** 空闲时间*/ 23 | private static final long KEEPALL_LIVETIME= 60; 24 | 25 | 26 | @Bean 27 | public ThreadPoolExecutor threadPoolExecutor( 28 | @Qualifier("Handler") RejectedExecutionHandler rejectedExecutionHandler) 29 | { 30 | ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor( 31 | CORE_POOL_SIZE, 32 | MAX_NUM_POOL_SIZE, 33 | KEEPALL_LIVETIME, 34 | TimeUnit.SECONDS, 35 | new LinkedBlockingQueue<>(50), 36 | rejectedExecutionHandler 37 | ); 38 | 39 | return threadPoolExecutor; 40 | } 41 | 42 | @Bean("Handler") 43 | public RejectedExecutionHandler rejectedExecutionHandler() 44 | { 45 | return new ThreadPoolExecutor.AbortPolicy(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/conf/webConfig.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.conf; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.core.convert.support.GenericConversionService; 6 | import org.springframework.web.bind.support.ConfigurableWebBindingInitializer; 7 | import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; 8 | 9 | import javax.annotation.PostConstruct; 10 | 11 | /** 12 | * @author 永健 13 | * 配置日期 14 | */ 15 | @Configuration 16 | public class webConfig{ 17 | @Autowired 18 | RequestMappingHandlerAdapter handlerAdapter; 19 | 20 | @PostConstruct 21 | public void initEditableAvlidation() { 22 | 23 | ConfigurableWebBindingInitializer initializer = (ConfigurableWebBindingInitializer)handlerAdapter.getWebBindingInitializer(); 24 | if(initializer.getConversionService()!=null) { 25 | GenericConversionService genericConversionService = (GenericConversionService)initializer.getConversionService(); 26 | 27 | genericConversionService.addConverter(new StringDateToDateConfig()); 28 | 29 | } 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/constant/Constants.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.constant; 2 | 3 | /** 4 | * 通用常量信息 5 | * 6 | */ 7 | public class Constants 8 | { 9 | 10 | /** 11 | * 当前记录起始索引 12 | */ 13 | public static String PAGENUM = "pageNum"; 14 | 15 | 16 | /** 17 | * 登录失败 18 | */ 19 | public static String LOGIN_ERROR="login_error"; 20 | 21 | 22 | /** 23 | * 每页显示记录数 24 | */ 25 | public static String PAGESIZE = "pageSize"; 26 | 27 | /** 28 | * 排序列 29 | */ 30 | public static String ORDERBYCOLUMN = "orderByColumn"; 31 | 32 | /** 33 | * 排序的方向 "desc" 或者 "asc". 34 | */ 35 | public static String ISASC = "isAsc"; 36 | 37 | 38 | /** 39 | * session存储菜单的key 40 | */ 41 | public static String MENU_SESSION="menu-session"; 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/exception/file/FileNameLengthException.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.exception.file; 2 | 3 | import org.apache.commons.fileupload.FileUploadException; 4 | 5 | /** 6 | * @author 永健 7 | * 文件名超长异常 8 | */ 9 | public class FileNameLengthException extends FileUploadException{ 10 | 11 | private String msg; 12 | //文件名 13 | private String fileName; 14 | //文件长度 15 | private int length; 16 | //最大文件长度 17 | private int limitLength; 18 | 19 | public FileNameLengthException(String msg,String filename, int length, int maxLength) 20 | { 21 | super("file name : [" + filename + "], length : [" + length + "], max length : [" + maxLength + "]"); 22 | 23 | this.msg=msg; 24 | this.fileName=filename; 25 | this.length=length; 26 | this.limitLength=maxLength; 27 | } 28 | 29 | public String getMsg() 30 | { 31 | return msg; 32 | } 33 | 34 | public void setMsg(String msg) 35 | { 36 | this.msg = msg; 37 | } 38 | 39 | public String getFileName() 40 | { 41 | return fileName; 42 | } 43 | 44 | public void setFileName(String fileName) 45 | { 46 | this.fileName = fileName; 47 | } 48 | 49 | public int getLength() 50 | { 51 | return length; 52 | } 53 | 54 | public void setLength(int length) 55 | { 56 | this.length = length; 57 | } 58 | 59 | public int getLimitLength() 60 | { 61 | return limitLength; 62 | } 63 | 64 | public void setLimitLength(int limitLength) 65 | { 66 | this.limitLength = limitLength; 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/exception/file/FileSizeException.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.exception.file; 2 | 3 | 4 | import org.apache.commons.fileupload.FileUploadBase; 5 | 6 | /** 7 | * @author 永健 8 | * 文件大小异常 9 | */ 10 | public class FileSizeException extends FileUploadBase.FileSizeLimitExceededException{ 11 | 12 | 13 | private String msg; 14 | private long size; 15 | private long limitSize; 16 | 17 | public FileSizeException(String message, long actual, long permitted) 18 | { 19 | super(message, actual, permitted); 20 | this.msg=message; 21 | this.size=actual; 22 | this.limitSize=permitted; 23 | } 24 | 25 | public String getMsg() 26 | { 27 | return msg; 28 | } 29 | 30 | public void setMsg(String msg) 31 | { 32 | this.msg = msg; 33 | } 34 | 35 | public long getSize() 36 | { 37 | return size; 38 | } 39 | 40 | public void setSize(long size) 41 | { 42 | this.size = size; 43 | } 44 | 45 | public long getLimitSize() 46 | { 47 | return limitSize; 48 | } 49 | 50 | public void setLimitSize(long limitSize) 51 | { 52 | this.limitSize = limitSize; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/exception/file/MyFileDownException.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.exception.file; 2 | 3 | import org.apache.commons.fileupload.FileUploadException; 4 | 5 | import java.io.IOException; 6 | 7 | /** 8 | * @author 永健 9 | * 文件下载异常 10 | */ 11 | public class MyFileDownException extends IOException{ 12 | private String message; 13 | 14 | public MyFileDownException(String msg) 15 | { 16 | super(msg); 17 | this.message=msg; 18 | } 19 | 20 | @Override 21 | public String getMessage() 22 | { 23 | return message; 24 | } 25 | 26 | public void setMessage(String message) 27 | { 28 | this.message = message; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/exception/file/MyFileUploadException.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.exception.file; 2 | 3 | import org.apache.commons.fileupload.FileUploadException; 4 | 5 | import java.io.IOException; 6 | 7 | /** 8 | * @author 永健 9 | * 文件上传异常 10 | */ 11 | public class MyFileUploadException extends IOException{ 12 | 13 | private String msg; 14 | 15 | public MyFileUploadException(String msg) 16 | { 17 | super(msg); 18 | this.msg=msg; 19 | } 20 | 21 | public String getMsg() 22 | { 23 | return msg; 24 | } 25 | 26 | public void setMsg(String msg) 27 | { 28 | this.msg = msg; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/exception/permission/PermisExceptionResolver.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.exception.permission; 2 | 3 | import com.alibaba.druid.support.json.JSONUtils; 4 | import com.yj.oa.common.utils.AjaxUtis; 5 | import com.yj.oa.framework.web.controller.BaseController; 6 | import org.apache.shiro.authz.UnauthorizedException; 7 | import org.springframework.stereotype.Component; 8 | import org.springframework.web.servlet.HandlerExceptionResolver; 9 | import org.springframework.web.servlet.ModelAndView; 10 | 11 | import javax.servlet.ServletResponse; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.PrintWriter; 15 | import java.util.HashMap; 16 | import java.util.Map; 17 | 18 | /** 19 | * @author 永健 20 | * 21 | * 解决权限异常 22 | * 23 | */ 24 | @Component 25 | public class PermisExceptionResolver implements HandlerExceptionResolver{ 26 | 27 | public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, 28 | Exception ex) 29 | { 30 | 31 | if (!AjaxUtis.isAjax(request)) 32 | { 33 | // 如果是shiro无权操作,因为shiro 在操作auno等一部分不进行转发至无权限url 34 | if (ex instanceof UnauthorizedException) 35 | { 36 | ModelAndView mv = new ModelAndView("error/unauth.html"); 37 | return mv; 38 | } 39 | }else { 40 | if (ex instanceof UnauthorizedException) 41 | { 42 | Map map = new HashMap<>(); 43 | map.put("code", "1"); 44 | map.put("msg", "对不起,权限不足"); 45 | AjaxUtis.out(response,map); 46 | } 47 | } 48 | 49 | 50 | 51 | return null; 52 | 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/AjaxUtis.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils; 2 | 3 | import com.alibaba.druid.support.json.JSONUtils; 4 | 5 | import javax.servlet.ServletResponse; 6 | import javax.servlet.http.HttpServletRequest; 7 | import javax.servlet.http.HttpServletResponse; 8 | import java.io.PrintWriter; 9 | import java.util.Map; 10 | 11 | /** 12 | * @author 永健 13 | * ajax请求判断以及输出结果工具类 14 | */ 15 | public class AjaxUtis{ 16 | /** 17 | * 判断是否是ajax请求 18 | */ 19 | public static boolean isAjax(HttpServletRequest httpRequest) { 20 | return (httpRequest.getHeader("X-Requested-With") != null 21 | && "XMLHttpRequest" 22 | .equals(httpRequest.getHeader("X-Requested-With").toString())); 23 | } 24 | 25 | 26 | public static void out(ServletResponse response, Map resultMap) { 27 | PrintWriter out = null; 28 | try { 29 | //设置编码 30 | response.setCharacterEncoding("UTF-8"); 31 | //设置返回类型 32 | response.setContentType("application/json"); 33 | out = response.getWriter(); 34 | //输出 35 | response.getWriter().write(JSONUtils.toJSONString(resultMap)); 36 | } catch (Exception e) { 37 | System.out.println(e); 38 | } finally { 39 | out.flush(); 40 | out.close(); 41 | } 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/CharsetKit.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils; 2 | 3 | import java.nio.charset.Charset; 4 | import java.nio.charset.StandardCharsets; 5 | 6 | /** 7 | * 字符集工具类 8 | * @author 永健 9 | */ 10 | public class CharsetKit 11 | { 12 | /** ISO-8859-1 */ 13 | public static final String ISO_8859_1 = "ISO-8859-1"; 14 | /** UTF-8 */ 15 | public static final String UTF_8 = "UTF-8"; 16 | /** GBK */ 17 | public static final String GBK = "GBK"; 18 | 19 | /** ISO-8859-1 */ 20 | public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1); 21 | /** UTF-8 */ 22 | public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8); 23 | /** GBK */ 24 | public static final Charset CHARSET_GBK = Charset.forName(GBK); 25 | 26 | /** 27 | * 转换为Charset对象 28 | * 29 | * @param charset 字符集,为空则返回默认字符集 30 | * @return Charset 31 | */ 32 | public static Charset charset(String charset) 33 | { 34 | return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset); 35 | } 36 | 37 | /** 38 | * 转换字符串的字符集编码 39 | * 40 | * @param source 字符串 41 | * @param srcCharset 源字符集,默认ISO-8859-1 42 | * @param destCharset 目标字符集,默认UTF-8 43 | * @return 转换后的字符集 44 | */ 45 | public static String convert(String source, String srcCharset, String destCharset) 46 | { 47 | return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset)); 48 | } 49 | 50 | /** 51 | * 转换字符串的字符集编码 52 | * 53 | * @param source 字符串 54 | * @param srcCharset 源字符集,默认ISO-8859-1 55 | * @param destCharset 目标字符集,默认UTF-8 56 | * @return 转换后的字符集 57 | */ 58 | public static String convert(String source, Charset srcCharset, Charset destCharset) 59 | { 60 | if (null == srcCharset) 61 | { 62 | srcCharset = StandardCharsets.ISO_8859_1; 63 | } 64 | 65 | if (null == destCharset) 66 | { 67 | srcCharset = StandardCharsets.UTF_8; 68 | } 69 | 70 | if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) 71 | { 72 | return source; 73 | } 74 | return new String(source.getBytes(srcCharset), destCharset); 75 | } 76 | 77 | /** 78 | * @return 系统字符集编码 79 | */ 80 | public static String systemCharset() 81 | { 82 | return Charset.defaultCharset().name(); 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/MapDataUtil.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import java.util.HashMap; 5 | import java.util.Iterator; 6 | import java.util.Map; 7 | import java.util.Map.Entry; 8 | 9 | /** 10 | * @author 永健 11 | * Map通用处理方法 12 | * 13 | */ 14 | public class MapDataUtil 15 | { 16 | public static Map convertDataMap(HttpServletRequest request) 17 | { 18 | Map properties = request.getParameterMap(); 19 | Map returnMap = new HashMap(); 20 | Iterator entries = properties.entrySet().iterator(); 21 | Entry entry; 22 | String name = ""; 23 | String value = ""; 24 | while (entries.hasNext()) 25 | { 26 | entry = (Entry) entries.next(); 27 | name = (String) entry.getKey(); 28 | Object valueObj = entry.getValue(); 29 | if (null == valueObj) 30 | { 31 | value = ""; 32 | } 33 | else if (valueObj instanceof String[]) 34 | { 35 | String[] values = (String[]) valueObj; 36 | for (int i = 0; i < values.length; i++) 37 | { 38 | value = values[i] + ","; 39 | } 40 | value = value.substring(0, value.length() - 1); 41 | } 42 | else 43 | { 44 | value = valueObj.toString(); 45 | } 46 | returnMap.put(name, value); 47 | } 48 | return returnMap; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/file/FileUtil.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils.file; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | /** 6 | * @author 永健 7 | * 文件工具类 8 | */ 9 | public class FileUtil{ 10 | private final static String prfiex = "office/"; 11 | /** 12 | *定义GB的计算常量 13 | */ 14 | private static int GB = 1024 * 1024 * 1024; 15 | /** 16 | *定义MB的计算常量 17 | */ 18 | private static int MB = 1024 * 1024; 19 | /** 20 | *定义KB的计算常量 21 | */ 22 | private static int KB = 1024; 23 | 24 | /** 25 | * 26 | * @描述 将文件大小转换为不同的单位 27 | * 28 | * @date 2018/9/19 23:40 29 | */ 30 | public static String getFileSize(Long size) 31 | { 32 | //格式化小数 33 | DecimalFormat df = new DecimalFormat("0.00"); 34 | String resultSize = ""; 35 | if (size / GB >= 1) 36 | { 37 | //如果当前Byte的值大于等于1GB 38 | resultSize = df.format(size / (float) GB) + "GB "; 39 | } 40 | else if (size / MB >= 1) 41 | { 42 | //如果当前Byte的值大于等于1MB 43 | resultSize = df.format(size / (float) MB) + "MB "; 44 | } 45 | else if (size / KB >= 1) 46 | { 47 | //如果当前Byte的值大于等于1KB 48 | resultSize = df.format(size / (float) KB) + "KB "; 49 | } 50 | else 51 | { 52 | resultSize = size + "B "; 53 | } 54 | return resultSize; 55 | } 56 | 57 | /** 58 | * 59 | * @描述 office文档后缀 60 | * 61 | * @date 2018/9/19 16:21 62 | */ 63 | public static String getType(String type) 64 | { 65 | if (type.endsWith("document")) 66 | { 67 | return prfiex + "docx"; 68 | } 69 | else if (type.endsWith("template")) 70 | { 71 | return prfiex+".dotx"; 72 | } 73 | else if (type.endsWith("presentation")) 74 | { 75 | return prfiex+"pptx"; 76 | } 77 | else if (type.endsWith("slideshow")) 78 | { 79 | return prfiex+"ppsx"; 80 | } 81 | else if (type.endsWith("template")) 82 | { 83 | return prfiex+"potx"; 84 | } 85 | else if (type.endsWith("sheet")) 86 | { 87 | return prfiex+"xlsx"; 88 | } 89 | else { 90 | return type; 91 | } 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/shiro/Encryption.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils.shiro; 2 | 3 | import org.apache.shiro.crypto.hash.SimpleHash; 4 | import org.apache.shiro.util.ByteSource; 5 | 6 | public class Encryption { 7 | public static Object getMD5(String pwd,String salt){ 8 | //加密方式 9 | String hashAlgorithmName = "MD5"; 10 | //密码 11 | Object credentials = pwd; 12 | //使用ByteSource.Util.bytes()计算盐值 13 | Object Salt = ByteSource.Util.bytes(salt); 14 | //加密次数 15 | int hashIterations = 1024; 16 | Object result = new SimpleHash(hashAlgorithmName, credentials, Salt, hashIterations); 17 | return result; 18 | } 19 | 20 | public static void main(String []args){ 21 | //加密方式 22 | String hashAlgorithmName = "MD5"; 23 | //密码 24 | Object credentials = "admin"; 25 | //使用ByteSource.Util.bytes()计算盐值 26 | ByteSource salt = ByteSource.Util.bytes("1111111111"); 27 | //加密次数 28 | int hashIterations = 1024; 29 | Object result = new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations); 30 | System.out.println(result); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/common/utils/shiro/ShiroUtils.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.common.utils.shiro; 2 | 3 | import com.yj.oa.framework.shiro.UserRealm; 4 | import com.yj.oa.project.po.User; 5 | import org.apache.shiro.SecurityUtils; 6 | import org.apache.shiro.mgt.RealmSecurityManager; 7 | import org.apache.shiro.session.Session; 8 | import org.apache.shiro.subject.PrincipalCollection; 9 | import org.apache.shiro.subject.SimplePrincipalCollection; 10 | import org.apache.shiro.subject.Subject; 11 | /** 12 | * shiro 工具类 13 | * 14 | * @author ruoyi 15 | */ 16 | public class ShiroUtils 17 | { 18 | 19 | public static Subject getSubjct() 20 | { 21 | return SecurityUtils.getSubject(); 22 | } 23 | 24 | public static Session getSession() 25 | { 26 | return SecurityUtils.getSubject().getSession(); 27 | } 28 | 29 | public static void logout() 30 | { 31 | getSubjct().logout(); 32 | } 33 | 34 | public static User getUser() 35 | { 36 | return (User) getSubjct().getPrincipal(); 37 | } 38 | 39 | /** 40 | * 修改用户信息后刷新用户消息 41 | */ 42 | public static void reloadUser(User user) 43 | { 44 | Subject subject = getSubjct(); 45 | PrincipalCollection principalCollection = subject.getPrincipals(); 46 | String realmName = principalCollection.getRealmNames().iterator().next(); 47 | PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName); 48 | // 重新加载Principal 49 | subject.runAs(newPrincipalCollection); 50 | } 51 | 52 | /** 清空权限缓存*/ 53 | public static void clearCachedAuthorizationInfo() 54 | { 55 | RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager(); 56 | UserRealm realm = (UserRealm) rsm.getRealms().iterator().next(); 57 | realm.clearCachedAuthorizationInfo(); 58 | } 59 | 60 | public static String getUserId() 61 | { 62 | return getUser().getUid(); 63 | } 64 | 65 | public static String getLoginName() 66 | { 67 | return getUser().getName(); 68 | } 69 | 70 | public static String getIp() 71 | { 72 | return getSubjct().getSession().getHost(); 73 | } 74 | 75 | public static String getSessionId() 76 | { 77 | return String.valueOf(getSubjct().getSession().getId()); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/annotation/Operlog.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 自定义注解 拦截Controller 7 | * 8 | * @author 永健 9 | */ 10 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 11 | @Retention(RetentionPolicy.RUNTIME) 12 | @Documented 13 | public @interface Operlog{ 14 | /** 15 | * 描述业务操作 16 | */ 17 | String modal() default ""; 18 | 19 | /** 20 | * 操作类型 21 | */ 22 | String descr() default ""; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/aspect/enums/OperLogStatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.aspect.enums; 2 | 3 | /** 4 | * @author 永健 5 | */ 6 | public enum OperLogStatusEnum{ 7 | SUCCESS_STATUS(0,"正常"),ERROR_STATUS(1,"异常"); 8 | 9 | private Integer value; 10 | private String msg; 11 | 12 | OperLogStatusEnum(Integer value, String msg) 13 | { 14 | this.value = value; 15 | this.msg = msg; 16 | } 17 | 18 | public Integer getValue() 19 | { 20 | return value; 21 | } 22 | 23 | public void setValue(Integer value) 24 | { 25 | this.value = value; 26 | } 27 | 28 | public String getMsg() 29 | { 30 | return msg; 31 | } 32 | 33 | public void setMsg(String msg) 34 | { 35 | this.msg = msg; 36 | } 37 | 38 | public static String getMsg(Integer i) 39 | { 40 | for (OperLogStatusEnum logEnum: OperLogStatusEnum.values()) 41 | { 42 | if (i==logEnum.getValue()) 43 | { 44 | return logEnum.getMsg(); 45 | } 46 | } 47 | return null; 48 | } 49 | 50 | public static Boolean isEquals(Integer i) 51 | { 52 | for (OperLogStatusEnum logEnum: OperLogStatusEnum.values()) 53 | { 54 | if (i==logEnum.getValue()) 55 | { 56 | return true; 57 | } 58 | } 59 | return false; 60 | } 61 | 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/aspect/enums/OperLogTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.aspect.enums; 2 | 3 | /** 4 | * @author 永健 5 | */ 6 | public enum OperLogTypeEnum{ 7 | SUCCESS_TYPE(0,"info"),ERROR_TYPE(1,"error"); 8 | 9 | private Integer value; 10 | private String msg; 11 | 12 | OperLogTypeEnum() 13 | { 14 | } 15 | 16 | private OperLogTypeEnum(Integer value, String msg) 17 | { 18 | this.value = value; 19 | this.msg = msg; 20 | } 21 | 22 | public Integer getValue() 23 | { 24 | return value; 25 | } 26 | 27 | public void setValue(Integer value) 28 | { 29 | this.value = value; 30 | } 31 | 32 | public String getMsg() 33 | { 34 | return msg; 35 | } 36 | 37 | public void setMsg(String msg) 38 | { 39 | this.msg = msg; 40 | } 41 | 42 | public static String getMsg(Integer i) 43 | { 44 | for (OperLogTypeEnum logEnum: OperLogTypeEnum.values()) 45 | { 46 | if (i==logEnum.getValue()) 47 | { 48 | return logEnum.getMsg(); 49 | } 50 | } 51 | return null; 52 | } 53 | 54 | public static Boolean isEquals(Integer i) 55 | { 56 | for (OperLogTypeEnum logEnum: OperLogTypeEnum.values()) 57 | { 58 | if (i==logEnum.getValue()) 59 | { 60 | return true; 61 | } 62 | } 63 | return false; 64 | } 65 | 66 | 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/shiro/FilterChainDefinitionMapBuider.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.shiro; 2 | 3 | 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.util.LinkedHashMap; 7 | 8 | /** 9 | * @author 永健 10 | * 11 | * 配置shrio 拦截url 12 | * 13 | */ 14 | @Component 15 | public class FilterChainDefinitionMapBuider { 16 | public LinkedHashMap BuiderFilterChainDefinitionMap() { 17 | //LinkedHashMap是有序的 18 | LinkedHashMap ListMap = new LinkedHashMap<>(); 19 | /** 配置受保护页面 就是无需验证权限的页面 以及 需要权限访问的面 20 | * 1) anon 可以匿名访问 无需登陆验证 21 | * 2)authc 必须要权限认证才可以访问 22 | * 3) logout 登出过滤器 23 | **/ 24 | 25 | ListMap.put("/","anon"); 26 | 27 | //不拦截静态资源 28 | ListMap.put("/favicon.ico**", "anon"); 29 | ListMap.put("/ruoyi.png**", "anon"); 30 | ListMap.put("/css/**", "anon"); 31 | ListMap.put("/docs/**", "anon"); 32 | ListMap.put("/fonts/**", "anon"); 33 | ListMap.put("/img/**", "anon"); 34 | ListMap.put("/ajax/**", "anon"); 35 | ListMap.put("/js/**", "anon"); 36 | ListMap.put("/ruoyi/**", "anon"); 37 | ListMap.put("/druid/**", "anon"); 38 | ListMap.put("/captcha/captchaImage**", "anon"); 39 | 40 | 41 | 42 | //登录操作 43 | ListMap.put("/oa/login","anon"); 44 | //登录页面 45 | ListMap.put("/oa/toLogin","anon"); 46 | //未授权页面 47 | ListMap.put("/oa/unauth","anon"); 48 | //验证码 49 | ListMap.put("/code/getVerify","anon"); 50 | //登出 51 | ListMap.put("/oa/logout","logout"); 52 | 53 | //设置所有资源需要访问权限 54 | ListMap.put("/**", "sessionExpireFilter,authc"); 55 | return ListMap; 56 | } 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/shiro/LoginService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.shiro; 2 | 3 | import com.yj.oa.common.utils.ServletUtils; 4 | import com.yj.oa.common.utils.StringUtils; 5 | import com.yj.oa.project.po.User; 6 | import com.yj.oa.project.service.user.IUserService; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Component; 11 | 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpSession; 14 | 15 | import static com.yj.oa.project.po.VerificationCode.ValidateCodeUtil.RANDOMCODEKEY; 16 | 17 | /** 18 | * @author 永健 19 | * 登录验证用户的还在那个号密码以及验证码 是否为空 20 | */ 21 | @Component 22 | public class LoginService{ 23 | private final static Logger logger = LoggerFactory.getLogger(LoginService.class); 24 | /** 25 | * 验证码 sessinName 26 | */ 27 | private final static String VALIDATE_CODE="validateCode"; 28 | 29 | @Autowired 30 | IUserService iUserService; 31 | 32 | /** 33 | * 34 | * @描述: 登录校验 35 | * 36 | * @date: 2018/9/29 21:47 37 | */ 38 | public void checkLogin(String loginName, String pwd,String validateCode) throws Exception 39 | { 40 | HttpServletRequest request = ServletUtils.getRequest(); 41 | HttpSession session = request.getSession(); 42 | String code = (String) session.getAttribute(RANDOMCODEKEY); 43 | String inputCode = validateCode.toUpperCase(); 44 | 45 | //1.验证码校验 46 | if (StringUtils.isEmpty(inputCode)) 47 | { 48 | throw new Exception("验证码为空!"); 49 | } 50 | 51 | if (!inputCode.equals(code.toUpperCase())) 52 | { 53 | throw new Exception("验证码错误!"); 54 | } 55 | 56 | 57 | //用户名或者密码为空 58 | if (StringUtils.isEmpty(loginName)||StringUtils.isEmpty(pwd)) 59 | { 60 | throw new Exception("用户或密码为空!"); 61 | } 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/shiro/MySessionExpiredFilter.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.shiro; 2 | 3 | import com.yj.oa.common.utils.AjaxUtis; 4 | import com.yj.oa.common.utils.shiro.ShiroUtils; 5 | import com.yj.oa.framework.web.controller.BaseController; 6 | import com.yj.oa.framework.web.po.AjaxResult; 7 | import org.apache.shiro.subject.Subject; 8 | import org.apache.shiro.web.filter.PathMatchingFilter; 9 | import org.apache.shiro.web.filter.authc.FormAuthenticationFilter; 10 | import org.apache.shiro.web.servlet.AdviceFilter; 11 | import org.apache.shiro.web.util.WebUtils; 12 | 13 | import javax.servlet.ServletRequest; 14 | import javax.servlet.ServletResponse; 15 | import javax.servlet.http.HttpServletRequest; 16 | import java.util.HashMap; 17 | import java.util.Map; 18 | 19 | /** 20 | * @author 永健 21 | * 处理ajax Session过期请求 22 | */ 23 | public class MySessionExpiredFilter extends PathMatchingFilter{ 24 | 25 | @Override 26 | protected boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception 27 | { 28 | Subject subjct = ShiroUtils.getSubjct(); 29 | HttpServletRequest reqs = WebUtils.toHttp(request); 30 | String url = reqs.getRequestURI(); 31 | //是否ajax请求 32 | if (AjaxUtis.isAjax(reqs)) 33 | { 34 | //是否认证登录了 35 | if (!subjct.isAuthenticated()) 36 | { 37 | //是否是登录请求 38 | Map map = new HashMap<>(); 39 | map.put("code", "1"); 40 | map.put("msg", "会话超时/未登录!"); 41 | AjaxUtis.out(response, map); 42 | return false; 43 | } 44 | } 45 | return true; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/controller/defaulView/DefaultView.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.controller.defaulView; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.core.Ordered; 6 | import org.springframework.format.FormatterRegistry; 7 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 9 | 10 | @Configuration 11 | public class DefaultView extends WebMvcConfigurerAdapter { 12 | 13 | @Override 14 | public void addViewControllers(ViewControllerRegistry registry) { 15 | registry.addViewController("/OA").setViewName("redirect:/oa/toLogin"); 16 | registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 17 | super.addViewControllers(registry); 18 | } 19 | 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/page/PageDomain.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.page; 2 | 3 | 4 | import com.yj.oa.common.utils.StringUtils; 5 | 6 | /** 7 | * 分页数据 8 | */ 9 | public class PageDomain 10 | { 11 | /** 当前记录起始索引 */ 12 | private Integer pageNum; 13 | /** 每页显示记录数 */ 14 | private Integer pageSize; 15 | /** 排序列 */ 16 | private String orderByColumn; 17 | /** 排序的方向 "desc" 或者 "asc". */ 18 | private String isAsc; 19 | 20 | public String getOrderBy() 21 | { 22 | if (StringUtils.isEmpty(orderByColumn)) 23 | { 24 | return ""; 25 | } 26 | return orderByColumn + " " + isAsc; 27 | } 28 | 29 | public Integer getPageNum() 30 | { 31 | return pageNum; 32 | } 33 | 34 | public void setPageNum(Integer pageNum) 35 | { 36 | this.pageNum = pageNum; 37 | } 38 | 39 | public Integer getPageSize() 40 | { 41 | return pageSize; 42 | } 43 | 44 | public void setPageSize(Integer pageSize) 45 | { 46 | this.pageSize = pageSize; 47 | } 48 | 49 | public String getOrderByColumn() 50 | { 51 | return orderByColumn; 52 | } 53 | 54 | public void setOrderByColumn(String orderByColumn) 55 | { 56 | this.orderByColumn = orderByColumn; 57 | } 58 | 59 | public String getIsAsc() 60 | { 61 | return isAsc; 62 | } 63 | 64 | public void setIsAsc(String isAsc) 65 | { 66 | this.isAsc = isAsc; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/page/TableDataInfo.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.page; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | /** 7 | * 表格分页数据对象 8 | * 9 | */ 10 | public class TableDataInfo implements Serializable 11 | { 12 | private static final long serialVersionUID = 1L; 13 | /** 总记录数 */ 14 | private long total; 15 | /** 列表数据 */ 16 | private List rows; 17 | 18 | /** 19 | * 表格数据对象 20 | */ 21 | public TableDataInfo() 22 | { 23 | } 24 | 25 | /** 26 | * 分页 27 | * 28 | * @param list 列表数据 29 | * @param total 总记录数 30 | */ 31 | public TableDataInfo(List list, int total) 32 | { 33 | this.rows = list; 34 | this.total = total; 35 | } 36 | 37 | public long getTotal() 38 | { 39 | return total; 40 | } 41 | 42 | public void setTotal(long total) 43 | { 44 | this.total = total; 45 | } 46 | 47 | public List getRows() 48 | { 49 | return rows; 50 | } 51 | 52 | public void setRows(List rows) 53 | { 54 | this.rows = rows; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/page/TableSupport.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.page; 2 | 3 | 4 | import com.yj.oa.common.constant.Constants; 5 | import com.yj.oa.common.utils.ServletUtils; 6 | 7 | /** 8 | * 表格数据处理 9 | */ 10 | public class TableSupport 11 | { 12 | /** 13 | * 封装分页对象 14 | */ 15 | public static PageDomain getPageDomain() 16 | { 17 | PageDomain pageDomain = new PageDomain(); 18 | pageDomain.setPageNum(ServletUtils.getParameterToInt(Constants.PAGENUM)); 19 | pageDomain.setPageSize(ServletUtils.getParameterToInt(Constants.PAGESIZE)); 20 | pageDomain.setOrderByColumn(ServletUtils.getParameter(Constants.ORDERBYCOLUMN)); 21 | pageDomain.setIsAsc(ServletUtils.getParameter(Constants.ISASC)); 22 | return pageDomain; 23 | } 24 | 25 | public static PageDomain buildPageRequest() 26 | { 27 | return getPageDomain(); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/po/AjaxResult.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.po; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * @author 永健 7 | * 统一返回结果对象 8 | */ 9 | public class AjaxResult extends HashMap 10 | { 11 | private static final long serialVersionUID = 1L; 12 | 13 | /** 14 | * 初始化一个新创建的 Message 对象 15 | */ 16 | public AjaxResult() 17 | { 18 | } 19 | 20 | /** 21 | * 返回错误消息 22 | * 23 | * @return 错误消息 24 | */ 25 | public static AjaxResult error() 26 | { 27 | return error(1, "操作失败"); 28 | } 29 | 30 | /** 31 | * 返回错误消息 32 | * 33 | * @param msg 内容 34 | * @return 错误消息 35 | */ 36 | public static AjaxResult error(String msg) 37 | { 38 | return error(500, msg); 39 | } 40 | 41 | 42 | 43 | 44 | 45 | /** 46 | * 返回错误消息 47 | * 48 | * @param code 错误码 49 | * @param msg 内容 50 | * @return 错误消息 51 | */ 52 | public static AjaxResult error(int code, String msg) 53 | { 54 | AjaxResult json = new AjaxResult(); 55 | json.put("code", code); 56 | json.put("msg", msg); 57 | return json; 58 | } 59 | 60 | /** 61 | * 返回成功消息 62 | * 63 | * @param msg 内容 64 | * @return 成功消息 65 | */ 66 | public static AjaxResult success(String msg) 67 | { 68 | AjaxResult json = new AjaxResult(); 69 | json.put("msg", msg); 70 | json.put("code", 0); 71 | return json; 72 | } 73 | 74 | /** 75 | * 返回成功消息 76 | * 77 | * @return 成功消息 78 | */ 79 | public static AjaxResult success() 80 | { 81 | return AjaxResult.success("操作成功"); 82 | } 83 | 84 | /** 85 | * 返回成功消息 86 | * 87 | * @param key 键值 88 | * @param value 内容 89 | * @return 成功消息 90 | */ 91 | @Override 92 | public AjaxResult put(String key, Object value) 93 | { 94 | super.put(key, value); 95 | return this; 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/po/BasePo.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.po; 2 | 3 | 4 | import java.util.Date; 5 | 6 | /** 7 | * 公共字段,时间查询 8 | */ 9 | public class BasePo { 10 | 11 | private Date beginTime; 12 | private Date overTime; 13 | 14 | public Date getBeginTime() 15 | { 16 | return beginTime; 17 | } 18 | 19 | public void setBeginTime(Date beginTime) 20 | { 21 | this.beginTime = beginTime; 22 | } 23 | 24 | public Date getOverTime() 25 | { 26 | return overTime; 27 | } 28 | 29 | public void setOverTime(Date overTime) 30 | { 31 | this.overTime = overTime; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/framework/web/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.framework.web.service; 2 | 3 | import org.apache.shiro.SecurityUtils; 4 | import org.springframework.stereotype.Service; 5 | 6 | /** 7 | * thymeleaf 实现按钮权限可见性 8 | */ 9 | @Service("permission") 10 | public class PermissionService 11 | { 12 | public String hasPermi(String permission) 13 | { 14 | return isPermittedOperator(permission) ? "" : "hidden"; 15 | } 16 | 17 | private boolean isPermittedOperator(String permission) 18 | { 19 | return SecurityUtils.getSubject().isPermitted(permission); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/controller/VerificationCode/Controller.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.controller.VerificationCode; 2 | 3 | import com.yj.oa.project.po.VerificationCode.ValidateCodeUtil; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | import javax.servlet.http.HttpServletResponse; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | @org.springframework.stereotype.Controller 15 | @RequestMapping("/code") 16 | public class Controller{ 17 | private Logger log = LoggerFactory.getLogger(this.getClass()); 18 | 19 | // 获取验证码 20 | @RequestMapping("/getVerify") 21 | public void getVerify(HttpServletRequest request, HttpServletResponse response) { 22 | try { 23 | //设置相应类型,告诉浏览器输出的内容为图片 24 | response.setContentType("image/jpeg"); 25 | //设置响应头信息,告诉浏览器不要缓存此内容 26 | response.setHeader("Pragma", "No-cache"); 27 | response.setHeader("Cache-Control", "no-cache"); 28 | response.setDateHeader("Expire", 0); 29 | response.setCharacterEncoding("UTF-8"); 30 | request.setCharacterEncoding("UTF-8"); 31 | ValidateCodeUtil randomValidateCode = new ValidateCodeUtil(); 32 | //输出验证码图片方法 33 | randomValidateCode.getRandcode(request, response); 34 | } catch (Exception e) { 35 | log.error("获取验证码失败>>>> ", e); 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ActHiActinstMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ActHiActinst; 4 | 5 | import java.util.List; 6 | 7 | public interface ActHiActinstMapper{ 8 | 9 | 10 | /** 11 | * 删除活动历史信息 12 | * @param procInstId id 13 | * @return 14 | */ 15 | int deleteByProcInstId(String[] procInstId); 16 | 17 | /** 18 | * 根据进程实例id获取当前 实例的活动信息 19 | * @param procInstId 实例id 20 | * @return 21 | */ 22 | List selectByByProcInstId(String procInstId); 23 | 24 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ActHiProcinstMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ActHiProcinst; 4 | 5 | import java.util.List; 6 | 7 | public interface ActHiProcinstMapper{ 8 | 9 | /** 10 | * 批量删除 11 | */ 12 | int deleteByPrimaryKeys(String[] id); 13 | 14 | /** 15 | * 根据主键查询 16 | */ 17 | ActHiProcinst selectByPrimaryKey(String id); 18 | 19 | /** 20 | * 21 | * @描述: 根据实例id查询 判断改实例是否已经结束 22 | * 23 | * @params: 24 | * @return: 25 | * @date: 2018/9/23 15:18 26 | */ 27 | ActHiProcinst selectByProcInstId(String procInstId); 28 | 29 | /** 30 | * @ 描述 列表 31 | * @date 2018/9/23 12:02 32 | */ 33 | List selectActHiProcinstList(ActHiProcinst actHiProcinst); 34 | 35 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ActHiTaskInstMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ActHiTaskInst; 4 | 5 | import java.util.List; 6 | 7 | public interface ActHiTaskInstMapper{ 8 | 9 | /** 10 | * 11 | * @描述: 删除批量 12 | * 13 | * @params: 14 | * @return: 15 | * @date: 2018/9/23 16:01 16 | */ 17 | int deleteByprocInstIds(String[] ids); 18 | 19 | /** 20 | * 21 | * @描述: 主键查询 22 | * 23 | * @params: 24 | * @return: 25 | * @date: 2018/9/23 16:02 26 | */ 27 | ActHiTaskInst selectByPrimaryKey(String id); 28 | 29 | /** 30 | * 31 | * @描述: 根据审批人查询历史审批记录 32 | * 33 | * @params: 34 | * @return: 35 | * @date: 2018/9/23 16:02 36 | */ 37 | List selectActHiTaskInstList(ActHiTaskInst actHiTaskInst); 38 | 39 | 40 | 41 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ActTaskMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ActTask; 4 | 5 | import java.util.List; 6 | 7 | public interface ActTaskMapper{ 8 | 9 | /** 10 | * 11 | * @描述 任务列表 12 | * 13 | * @date 2018/9/21 22:47 14 | */ 15 | List selectACTTaskList(ActTask record); 16 | 17 | 18 | /** 19 | * 批量删除 20 | * 21 | * @param ids id数组 22 | */ 23 | int deletByProcInstS(String[] ids); 24 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ApplyRoomFormMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ApplyRoomForm; 4 | 5 | import java.util.List; 6 | 7 | public interface ApplyRoomFormMapper{ 8 | /** 9 | * 10 | * 批量删除 11 | * @mbggenerated 12 | */ 13 | int deleteByprocInstIds(String[] ids); 14 | 15 | /** 16 | *添加 17 | * @mbggenerated 18 | */ 19 | int insertSelective(ApplyRoomForm record); 20 | 21 | /** 22 | *主键查询 23 | * 24 | * @mbggenerated 25 | */ 26 | ApplyRoomForm selectByPrimaryKey(String id); 27 | 28 | /** 29 | * 修改状态 30 | * @mbggenerated 31 | */ 32 | int updateByPrimaryKeySelective(ApplyRoomForm record); 33 | 34 | 35 | /** 36 | * 列表 37 | * @mbggenerated 38 | */ 39 | List selectApplyRoomList(ApplyRoomForm a); 40 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/AttendCountMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Attend; 4 | import com.yj.oa.project.po.AttendCount; 5 | 6 | import java.util.List; 7 | 8 | public interface AttendCountMapper { 9 | 10 | /** 11 | * 删除 12 | * @param id 13 | * @return 14 | */ 15 | int deleteByPrimaryKeys(Integer[] id); 16 | 17 | /** 18 | * 添加 19 | * @param record 20 | * @return 21 | */ 22 | int insertSelective(AttendCount record); 23 | 24 | /** 25 | * 主键查找 26 | * @param id 27 | * @return 28 | */ 29 | AttendCount selectByPrimaryKey(Integer id); 30 | 31 | /** 32 | * 修改 33 | * @param record 34 | * @return 35 | */ 36 | int updateByPrimaryKeySelective(AttendCount record); 37 | 38 | /** 39 | * 列表 40 | * @param attendCount 41 | * @return 42 | */ 43 | List selectAttendCountList(AttendCount attendCount); 44 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/AttendMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Attend; 4 | 5 | import java.util.List; 6 | 7 | public interface AttendMapper { 8 | 9 | /** 10 | * 删除 11 | * @param id 12 | * @return 13 | */ 14 | int deleteByPrimaryKeys(Integer[] id); 15 | 16 | /** 17 | * 添加 18 | * @param record 19 | * @return 20 | */ 21 | int insertSelective(Attend record); 22 | 23 | /** 24 | * 主键查询 25 | * @param id 26 | * @return 27 | */ 28 | Attend selectByPrimaryKey(Integer id); 29 | 30 | /** 31 | * 修改 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(Attend record); 36 | 37 | /** 38 | * 根据主键修改 39 | * @param record 40 | * @return 41 | */ 42 | int updateByPrimaryKey(Attend record); 43 | 44 | /** 45 | * 列表 46 | * @param attend 47 | * @return 48 | */ 49 | List selectAttendList(Attend attend); 50 | 51 | /** 52 | * 查询当天打卡记录 53 | * @param userId 54 | * @return 55 | */ 56 | Attend selectSaveDayIsAttend(String userId); 57 | 58 | /** 59 | * 列表 60 | * @param attend 61 | * @return 62 | */ 63 | List selectByMothAndUserId(Attend attend); 64 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/DeptMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Dept; 4 | 5 | import java.util.List; 6 | 7 | public interface DeptMapper { 8 | /** 9 | * 10 | * 批量删除 11 | */ 12 | int deleteByPrimaryKeys(String[] ids) throws Exception; 13 | 14 | 15 | /** 16 | * 添加 17 | * @param record 18 | * @return 19 | */ 20 | int insertSelective(Dept record); 21 | 22 | /** 23 | * 主键查询 24 | * @param depId 25 | * @return 26 | */ 27 | Dept selectByPrimaryKey(String depId); 28 | 29 | /** 30 | * 修改 31 | * @param record 32 | * @return 33 | */ 34 | int updateByPrimaryKeySelective(Dept record); 35 | 36 | 37 | /** 38 | * 39 | * @描述 部门列表 40 | * 41 | * @date 2018/9/15 13:39 42 | */ 43 | List selectDeptList(Dept dept); 44 | 45 | /** 46 | * 47 | * @描述 检验名称唯一性 48 | * 49 | * @date 2018/9/16 11:42 50 | */ 51 | Dept checkDeptNameUnique(String deptName); 52 | 53 | /** 54 | * 55 | * @描述: 查询所有部门下的所有用户 用户归类 树状数据 56 | * 57 | * @date: 2018/9/27 11:25 58 | */ 59 | List selectDeptAndUser(); 60 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/FilesMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | 4 | import com.yj.oa.project.po.Files; 5 | 6 | import java.util.List; 7 | 8 | public interface FilesMapper{ 9 | /** 10 | * 批量删除 11 | * @param fileId 12 | * @return 13 | */ 14 | int deleteByPrimaryKeys(String[] fileId); 15 | 16 | 17 | /** 18 | * 添加 19 | * @param record 20 | * @return 21 | */ 22 | int insertSelective(Files record); 23 | 24 | /** 25 | * 主键查询 26 | * @param fileId 27 | * @return 28 | */ 29 | Files selectByPrimaryKey(Integer fileId); 30 | 31 | /** 32 | * 修改下载数量 33 | * @param record 34 | * @return 35 | */ 36 | int updateByPrimaryKeySelective(Files record); 37 | 38 | 39 | 40 | /** 41 | * 42 | * @描述 列表 43 | * 44 | * @date 2018/9/19 12:07 45 | */ 46 | List selectFileList(Files file); 47 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/GuestBookMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.GuestBook; 4 | 5 | public interface GuestBookMapper { 6 | /** 7 | * This method was generated by MyBatis Generator. 8 | * This method corresponds to the database table t_guestbook 9 | * 10 | * @mbggenerated 11 | */ 12 | int deleteByPrimaryKey(Integer id); 13 | 14 | /** 15 | * This method was generated by MyBatis Generator. 16 | * This method corresponds to the database table t_guestbook 17 | * 18 | * @mbggenerated 19 | */ 20 | int insert(GuestBook record); 21 | 22 | /** 23 | * This method was generated by MyBatis Generator. 24 | * This method corresponds to the database table t_guestbook 25 | * 26 | * @mbggenerated 27 | */ 28 | int insertSelective(GuestBook record); 29 | 30 | /** 31 | * This method was generated by MyBatis Generator. 32 | * This method corresponds to the database table t_guestbook 33 | * 34 | * @mbggenerated 35 | */ 36 | GuestBook selectByPrimaryKey(Integer id); 37 | 38 | /** 39 | * This method was generated by MyBatis Generator. 40 | * This method corresponds to the database table t_guestbook 41 | * 42 | * @mbggenerated 43 | */ 44 | int updateByPrimaryKeySelective(GuestBook record); 45 | 46 | /** 47 | * This method was generated by MyBatis Generator. 48 | * This method corresponds to the database table t_guestbook 49 | * 50 | * @mbggenerated 51 | */ 52 | int updateByPrimaryKeyWithBLOBs(GuestBook record); 53 | 54 | /** 55 | * This method was generated by MyBatis Generator. 56 | * This method corresponds to the database table t_guestbook 57 | * 58 | * @mbggenerated 59 | */ 60 | int updateByPrimaryKey(GuestBook record); 61 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/LeaveFormMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ApplyRoomForm; 4 | import com.yj.oa.project.po.LeaveForm; 5 | 6 | import java.util.List; 7 | 8 | public interface LeaveFormMapper{ 9 | /** 10 | * 11 | * 批量删除 12 | * @mbggenerated 13 | */ 14 | int deleteByprocInstIds(String[] ids); 15 | 16 | /** 17 | *添加 18 | * @mbggenerated 19 | */ 20 | int insertSelective(LeaveForm record); 21 | 22 | /** 23 | *主键查询 24 | * 25 | * @mbggenerated 26 | */ 27 | LeaveForm selectByPrimaryKey(Integer id); 28 | 29 | /** 30 | * 修改状态 31 | * @mbggenerated 32 | */ 33 | int updateByPrimaryKeySelective(LeaveForm record); 34 | 35 | 36 | /** 37 | * 列表 38 | * @mbggenerated 39 | */ 40 | List selectLeavFormList(LeaveForm a); 41 | 42 | /** 43 | * 统计请假天数 44 | */ 45 | List selectByUserIdAndDate(LeaveForm leaveForm); 46 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/MeetMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Meet; 4 | 5 | import java.util.List; 6 | 7 | public interface MeetMapper { 8 | 9 | /** 10 | * 主键查询 11 | * @param id 12 | * @return 13 | */ 14 | Meet selectByPrimaryKey(Integer id); 15 | 16 | /** 17 | * 批量删除 18 | * @param id 19 | * @return 20 | */ 21 | int deleteByPrimaryKeys(Integer[] id); 22 | 23 | /** 24 | * 添加 25 | * @param record 26 | * @return 27 | */ 28 | int insertSelective(Meet record); 29 | 30 | /** 31 | * 修改啊 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(Meet record); 36 | 37 | /** 38 | * 列表 39 | * @param meet 40 | * @return 41 | */ 42 | List selectByMeetList(Meet meet); 43 | 44 | /** 45 | * 根据用户id获取个人会议 46 | * @param uId 47 | * @return 48 | */ 49 | List selectMyMeetList(String uId); 50 | 51 | 52 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/MeetingRoomMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.MeetingRoom; 4 | 5 | import java.util.List; 6 | 7 | public interface MeetingRoomMapper{ 8 | 9 | /** 10 | * 添加 11 | */ 12 | int insertSelective(MeetingRoom record); 13 | 14 | /** 15 | * 批量删除 16 | */ 17 | int deleteByPrimaryKeys(Integer[] ids); 18 | 19 | /** 20 | * 修改 21 | */ 22 | int updateByPrimaryKeySelective(MeetingRoom meetingRoom); 23 | 24 | /** 25 | * 列表查询 26 | */ 27 | List selectMeetRoomList(MeetingRoom meetingRoom); 28 | 29 | /** 30 | * 名字唯一性 31 | * @date 32 | */ 33 | MeetingRoom checkRoomNameUnique(String meetRoomName); 34 | 35 | /** 36 | * 主键查询 37 | * @date 38 | */ 39 | MeetingRoom selectByPrimaryKey(Integer id); 40 | 41 | /** 42 | * 房间名查询 43 | * @date 44 | */ 45 | MeetingRoom selectByRoomName(String roomName); 46 | 47 | /** 48 | * 根据房间名修改状态 房间名唯一 49 | * @date 50 | */ 51 | int updateByRoomName(MeetingRoom meetingRoom); 52 | 53 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/NoteMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Note; 4 | 5 | import java.util.List; 6 | 7 | public interface NoteMapper { 8 | 9 | /** 10 | * 删除 11 | * @param id 12 | * @return 13 | */ 14 | int deleteByPrimaryKeys(Integer[] id); 15 | 16 | /** 17 | * 添加 18 | * @param record 19 | * @return 20 | */ 21 | int insertSelective(Note record); 22 | 23 | /** 24 | * id查询 25 | * @param id 26 | * @return 27 | */ 28 | Note selectByPrimaryKey(Integer id); 29 | 30 | /** 31 | * 修改 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(Note record); 36 | 37 | /** 38 | * 列表 39 | * @param note 40 | * @return 41 | */ 42 | List selectNoteList(Note note); 43 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/NoticeMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Notice; 4 | import com.yj.oa.project.po.Position; 5 | import org.aspectj.weaver.ast.Not; 6 | 7 | import java.util.List; 8 | 9 | public interface NoticeMapper{ 10 | /** 11 | * 12 | * @描述 批量删除 13 | * 14 | * @date 2018/9/18 20:15 15 | */ 16 | int deleteByPrimaryKeys(Integer[] positionId) throws RuntimeException; 17 | 18 | /** 19 | * 20 | * @描述插入 21 | * 22 | * @date 2018/9/18 20:15 23 | */ 24 | int insertSelective(Notice record); 25 | 26 | /** 27 | * 28 | * @描述 根据id查询 29 | * 30 | * @date 2018/9/18 20:15 31 | */ 32 | Notice selectByPrimaryKey(Integer id); 33 | 34 | /** 35 | * 36 | * @描述 修改 37 | * 38 | * @date 2018/9/18 20:15 39 | */ 40 | int updateByPrimaryKeySelective(Notice record); 41 | 42 | /** 43 | * 列表 44 | * @param record 45 | * @return 46 | */ 47 | List selectNoticeList(Notice record); 48 | 49 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/OperLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.OperLog; 4 | 5 | import java.util.List; 6 | 7 | public interface OperLogMapper { 8 | 9 | /** 10 | * 删除 11 | * @param id 12 | * @return 13 | */ 14 | int deleteByPrimaryKeys(Integer[] id); 15 | 16 | /** 17 | * 添加 18 | * @param record 19 | * @return 20 | */ 21 | int insertSelective(OperLog record); 22 | 23 | /** 24 | * 主键查询 25 | * @param id 26 | * @return 27 | */ 28 | OperLog selectByPrimaryKey(Integer id); 29 | 30 | /** 31 | * 修改 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(OperLog record); 36 | 37 | /** 38 | * 列表 39 | * @param operLog 40 | * @return 41 | */ 42 | List selectOperLogList(OperLog operLog); 43 | 44 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/PermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.dto.MenuTree; 4 | import com.yj.oa.project.po.dto.PermTree; 5 | import com.yj.oa.project.po.Permission; 6 | 7 | import java.util.List; 8 | 9 | public interface PermissionMapper { 10 | 11 | /** 12 | * 删除 13 | * @param permissionId 14 | * @return 15 | */ 16 | int deleteByPrimaryKeys(Integer[] permissionId); 17 | 18 | 19 | /** 20 | * 添加 21 | * @param record 22 | * @return 23 | */ 24 | int insertSelective(Permission record); 25 | 26 | /** 27 | * 主键查询 28 | * @param permissionId 29 | * @return 30 | */ 31 | Permission selectByPrimaryKey(Integer permissionId); 32 | 33 | /** 34 | * 菜单名唯一性查询 35 | * @param permission 36 | * @return 37 | */ 38 | Permission checkMenuNameUnique(Permission permission); 39 | 40 | /** 41 | * 修改 42 | * @param record 43 | * @return 44 | */ 45 | int updateByPrimaryKeySelective(Permission record); 46 | 47 | /** 48 | * 列表 49 | * @param record 50 | * @return 51 | */ 52 | List selectPersissionList(Permission record); 53 | 54 | /** 55 | * 查询权限结构 56 | */ 57 | List selectPermTree(); 58 | 59 | 60 | /** 61 | * selectMenuTree 菜单列表结构 根据用户Id查询出左侧菜单列表 62 | */ 63 | List selectMenuTree(String uid); 64 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/PositionMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Position; 4 | 5 | import java.util.List; 6 | 7 | public interface PositionMapper { 8 | /** 9 | * 删除 10 | * @param positionId 11 | * @return 12 | * @throws Exception 13 | */ 14 | int deleteByPrimaryKeys(Integer[] positionId) throws Exception; 15 | 16 | /** 17 | * 添加 18 | * @param record 19 | * @return 20 | */ 21 | int insertSelective(Position record); 22 | 23 | /** 24 | * 主键查询 25 | * @param positionId 26 | * @return 27 | */ 28 | Position selectByPrimaryKey(Integer positionId); 29 | 30 | /** 31 | * 修改 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(Position record); 36 | 37 | /** 38 | * 列表 39 | * @param position 40 | * @return 41 | */ 42 | List selectPositionList(Position position); 43 | 44 | /** 45 | * 名称唯一 46 | * @param name 47 | * @return 48 | */ 49 | Position checkPositionNameUnique(String name); 50 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Role; 4 | 5 | import java.util.List; 6 | 7 | public interface RoleMapper { 8 | /** 9 | * 添加 10 | * @param record 11 | * @return 12 | */ 13 | int insert(Role record); 14 | 15 | /** 16 | * 列表 17 | * @param role 18 | * @return 19 | */ 20 | List selectRoleList(Role role); 21 | 22 | /** 23 | * 唯一性检查 24 | * @param roleName 25 | * @return 26 | */ 27 | Role checkRoleNameUnique(String roleName); 28 | 29 | /** 30 | * 批量删除 31 | * @param ids 32 | * @return 33 | */ 34 | int deleteByPrimaryKeys(Integer[]ids); 35 | 36 | /** 37 | * 主键查询 38 | * @param roleId 39 | * @return 40 | */ 41 | Role selectByPrimaryKey(Integer roleId); 42 | 43 | /** 44 | * 修改 45 | * @param role 46 | * @return 47 | */ 48 | int updateByPrimaryKeySelective(Role role); 49 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.RoleMenu; 4 | 5 | public interface RoleMenuMapper { 6 | /** 7 | * This method was generated by MyBatis Generator. 8 | * This method corresponds to the database table t_role_menu 9 | * 10 | * @mbggenerated 11 | */ 12 | int deleteByPrimaryKey(Integer rm_id); 13 | 14 | /** 15 | * This method was generated by MyBatis Generator. 16 | * This method corresponds to the database table t_role_menu 17 | * 18 | * @mbggenerated 19 | */ 20 | int insert(RoleMenu record); 21 | 22 | /** 23 | * This method was generated by MyBatis Generator. 24 | * This method corresponds to the database table t_role_menu 25 | * 26 | * @mbggenerated 27 | */ 28 | int insertSelective(RoleMenu record); 29 | 30 | /** 31 | * This method was generated by MyBatis Generator. 32 | * This method corresponds to the database table t_role_menu 33 | * 34 | * @mbggenerated 35 | */ 36 | RoleMenu selectByPrimaryKey(Integer rm_id); 37 | 38 | /** 39 | * This method was generated by MyBatis Generator. 40 | * This method corresponds to the database table t_role_menu 41 | * 42 | * @mbggenerated 43 | */ 44 | int updateByPrimaryKeySelective(RoleMenu record); 45 | 46 | /** 47 | * This method was generated by MyBatis Generator. 48 | * This method corresponds to the database table t_role_menu 49 | * 50 | * @mbggenerated 51 | */ 52 | int updateByPrimaryKey(RoleMenu record); 53 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/RolePermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Permission; 4 | import com.yj.oa.project.po.RolePermission; 5 | 6 | import java.util.List; 7 | 8 | public interface RolePermissionMapper { 9 | /** 10 | * 11 | * 根据角色删除 12 | * @mbggenerated 13 | */ 14 | int deleteByRoleIdyKey(Integer roleId); 15 | 16 | /** 17 | * 批量删除 18 | * @param roleIds 19 | * @return 20 | */ 21 | int deleteByRoleIdKeys(Integer[] roleIds); 22 | 23 | 24 | 25 | /** 26 | * 添加 27 | */ 28 | int insertSelective(RolePermission record); 29 | 30 | /** 31 | * 删除菜单时候,判断是否有角色拥有当前菜单信息 是否存在子菜单 32 | * 查询有少个 33 | */ 34 | int selectByPermissionKey(Integer id); 35 | 36 | 37 | /** 38 | * 39 | * @描述 批量插入 40 | * 41 | * @date 2018/9/16 16:35 42 | */ 43 | int insertBatch(List list); 44 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ScheduleMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Schedule; 4 | 5 | import java.util.List; 6 | 7 | public interface ScheduleMapper{ 8 | 9 | /** 10 | * 删除 11 | * @param id 12 | * @return 13 | */ 14 | int deleteByPrimaryKeys(Integer[] id); 15 | 16 | /** 17 | * 添加 18 | * @param record 19 | * @return 20 | */ 21 | int insertSelective(Schedule record); 22 | 23 | /** 24 | * 主键查询 25 | * @param id 26 | * @return 27 | */ 28 | Schedule selectByPrimaryKey(Integer id); 29 | 30 | /** 31 | * 修改 32 | * @param record 33 | * @return 34 | */ 35 | int updateByPrimaryKeySelective(Schedule record); 36 | 37 | /** 38 | * 列表 39 | * @param schedule 40 | * @return 41 | */ 42 | List selectScheduleList(Schedule schedule); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/ScheduleUserMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.ScheduleUser; 4 | 5 | import java.util.List; 6 | 7 | public interface ScheduleUserMapper { 8 | int deleteByPrimaryKeys(Integer[] id); 9 | 10 | 11 | int insertSelective(List userList); 12 | 13 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/TelMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Tel; 4 | 5 | import java.util.List; 6 | 7 | public interface TelMapper { 8 | int deleteByPrimaryKeys(Integer[] id); 9 | 10 | int insertSelective(Tel record); 11 | 12 | Tel selectByPrimaryKey(Integer id); 13 | 14 | int updateByPrimaryKeySelective(Tel record); 15 | 16 | List selectTelList(Tel tel); 17 | 18 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.User; 4 | 5 | import java.util.List; 6 | 7 | public interface UserMapper{ 8 | 9 | 10 | /** 11 | * 添加 12 | */ 13 | int insertSelective(User record); 14 | 15 | /** 16 | * 根据Id主键查询单个用户 登录用此方法 17 | */ 18 | User selectByPrimaryKey(String uId); 19 | 20 | /** 21 | * 更改用户 22 | */ 23 | int updateByPrimaryKeySelective(User record); 24 | 25 | 26 | /* 27 | * 28 | * 批量删除用户 29 | */ 30 | int deleteByPrimaryKeys(String[] ids); 31 | 32 | /* 33 | * 34 | * 用户列表 以及 根据条件查询 35 | */ 36 | List selectByUser(User user); 37 | 38 | /** 39 | * 40 | * @描述: login登录验证 41 | * 42 | * @params: 43 | * @return: 44 | * @date: 2018/9/29 21:50 45 | */ 46 | User login(String loginName); 47 | 48 | 49 | /** 50 | * 校验手机号码是否唯一 51 | * 52 | * @param tel 手机号码 53 | * 54 | * @return 结果 55 | */ 56 | User checkPhoneUnique(String tel); 57 | 58 | /** 59 | * 校验email是否唯一 60 | * 61 | * @param email 用户邮箱 62 | * 63 | * @return 结果 64 | */ 65 | User checkEmailUnique(String email); 66 | 67 | 68 | /** 69 | * 校验用户登录名是否唯一 70 | * 71 | * @param email 用户邮箱 72 | * 73 | * @return 结果 74 | */ 75 | User checkLoginNameUnique(String loginName); 76 | 77 | /** 查询最新的id*/ 78 | Long selectUserMaxId(); 79 | 80 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/UserMeetMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.Meet; 4 | import com.yj.oa.project.po.UserMeet; 5 | 6 | import java.util.List; 7 | 8 | public interface UserMeetMapper { 9 | 10 | int deleteByMeetIdKeys(Integer[] id); 11 | 12 | 13 | int insertSelective(List lsit); 14 | 15 | 16 | 17 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.UserRole; 4 | 5 | public interface UserRoleMapper { 6 | /** 7 | * This method was generated by MyBatis Generator. 8 | * This method corresponds to the database table t_user_role 9 | * 10 | * @mbggenerated 11 | */ 12 | int insert(UserRole record); 13 | 14 | /** 15 | * This method was generated by MyBatis Generator. 16 | * This method corresponds to the database table t_user_role 17 | * 18 | * @mbggenerated 19 | */ 20 | int insertSelective(UserRole record); 21 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/mapper/WorkTimeMapper.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.mapper; 2 | 3 | import com.yj.oa.project.po.WorkTime; 4 | 5 | import java.util.List; 6 | 7 | public interface WorkTimeMapper { 8 | /** 9 | * 删除 10 | * @param id 11 | * @return 12 | */ 13 | int deleteByPrimaryKeys(Integer[] id); 14 | 15 | /** 16 | * 添加 17 | * @param record 18 | * @return 19 | */ 20 | int insertSelective(WorkTime record); 21 | 22 | /** 23 | * 主键查询 24 | * @param id 25 | * @return 26 | */ 27 | WorkTime selectByPrimaryKey(Integer id); 28 | 29 | /** 30 | * 修改 31 | * @param record 32 | * @return 33 | */ 34 | int updateByPrimaryKeySelective(WorkTime record); 35 | 36 | /** 37 | * 查询正在使用的那一条数据 38 | * @return 39 | */ 40 | WorkTime selectUsing(); 41 | 42 | /** 43 | * 列表 44 | * @param workTime 45 | * @return 46 | */ 47 | List selectWorkTimeList(WorkTime workTime); 48 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/MeetingRoom.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | import com.yj.oa.framework.web.po.BasePo; 4 | 5 | import java.util.Date; 6 | 7 | public class MeetingRoom extends BasePo{ 8 | 9 | private Integer id; 10 | 11 | private String meetRoomName; 12 | 13 | private String meetRoomPlace; 14 | 15 | private String capacity; 16 | 17 | private Date createTime; 18 | 19 | /** 20 | * @ 描述 房间状态情况 0:空闲,1:预约中 2:使用中,3停用 21 | * @date 2018/9/22 14:10 22 | */ 23 | private Integer status; 24 | 25 | public Integer getId() 26 | { 27 | return id; 28 | } 29 | 30 | public void setId(Integer id) 31 | { 32 | this.id = id; 33 | } 34 | 35 | public String getMeetRoomName() 36 | { 37 | return meetRoomName; 38 | } 39 | 40 | public void setMeetRoomName(String meetRoomName) 41 | { 42 | this.meetRoomName = meetRoomName; 43 | } 44 | 45 | public String getMeetRoomPlace() 46 | { 47 | return meetRoomPlace; 48 | } 49 | 50 | public void setMeetRoomPlace(String meetRoomPlace) 51 | { 52 | this.meetRoomPlace = meetRoomPlace; 53 | } 54 | 55 | public String getCapacity() 56 | { 57 | return capacity; 58 | } 59 | 60 | public void setCapacity(String capacity) 61 | { 62 | this.capacity = capacity; 63 | } 64 | 65 | public Date getCreateTime() 66 | { 67 | return createTime; 68 | } 69 | 70 | public void setCreateTime(Date createTime) 71 | { 72 | this.createTime = createTime; 73 | } 74 | 75 | public Integer getStatus() 76 | { 77 | return status; 78 | } 79 | 80 | public void setStatus(Integer status) 81 | { 82 | this.status = status; 83 | } 84 | 85 | @Override 86 | public String toString() 87 | { 88 | final StringBuffer sb = new StringBuffer("MeetingRoom{"); 89 | sb.append("id=").append(id); 90 | sb.append(", meetRoomName='").append(meetRoomName).append('\''); 91 | sb.append(", meetRoomPlace='").append(meetRoomPlace).append('\''); 92 | sb.append(", capacity='").append(capacity).append('\''); 93 | sb.append(", crateeTime=").append(createTime); 94 | sb.append(", status=").append(status); 95 | sb.append('}'); 96 | return sb.toString(); 97 | } 98 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/Note.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | import com.yj.oa.framework.web.po.BasePo; 4 | 5 | import java.util.Date; 6 | 7 | public class Note extends BasePo{ 8 | private Integer id; 9 | 10 | private String title; 11 | 12 | private String content; 13 | 14 | private String createBy; 15 | 16 | private Date createTime; 17 | 18 | public Integer getId() 19 | { 20 | return id; 21 | } 22 | 23 | public void setId(Integer id) 24 | { 25 | this.id = id; 26 | } 27 | 28 | public String getTitle() 29 | { 30 | return title; 31 | } 32 | 33 | public void setTitle(String title) 34 | { 35 | this.title = title; 36 | } 37 | 38 | public String getContent() 39 | { 40 | return content; 41 | } 42 | 43 | public void setContent(String content) 44 | { 45 | this.content = content; 46 | } 47 | 48 | public String getCreateBy() 49 | { 50 | return createBy; 51 | } 52 | 53 | public void setCreateBy(String createBy) 54 | { 55 | this.createBy = createBy; 56 | } 57 | 58 | public Date getCreateTime() 59 | { 60 | return createTime; 61 | } 62 | 63 | public void setCreateTime(Date createTime) 64 | { 65 | this.createTime = createTime; 66 | } 67 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/Notice.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | import com.yj.oa.framework.web.po.BasePo; 4 | 5 | import java.util.Date; 6 | 7 | public class Notice extends BasePo{ 8 | private Integer id; 9 | 10 | private String title; 11 | 12 | private String content; 13 | 14 | private String createBy; 15 | 16 | //0 正常,1不正常 17 | private Integer status; 18 | 19 | // 1 为通知 2为公公告 20 | private Integer type; 21 | 22 | private Date createTime; 23 | 24 | public Integer getId() 25 | { 26 | return id; 27 | } 28 | 29 | public void setId(Integer id) 30 | { 31 | this.id = id; 32 | } 33 | 34 | public String getTitle() 35 | { 36 | return title; 37 | } 38 | 39 | public void setTitle(String title) 40 | { 41 | this.title = title; 42 | } 43 | 44 | public String getContent() 45 | { 46 | return content; 47 | } 48 | 49 | public void setContent(String content) 50 | { 51 | this.content = content; 52 | } 53 | 54 | public String getCreateBy() 55 | { 56 | return createBy; 57 | } 58 | 59 | public void setCreateBy(String createBy) 60 | { 61 | this.createBy = createBy; 62 | } 63 | 64 | public Integer getStatus() 65 | { 66 | return status; 67 | } 68 | 69 | public void setStatus(Integer status) 70 | { 71 | this.status = status; 72 | } 73 | 74 | public Integer getType() 75 | { 76 | return type; 77 | } 78 | 79 | public void setType(Integer type) 80 | { 81 | this.type = type; 82 | } 83 | 84 | public Date getCreateTime() 85 | { 86 | return createTime; 87 | } 88 | 89 | public void setCreateTime(Date createTime) 90 | { 91 | this.createTime = createTime; 92 | } 93 | 94 | @Override 95 | public String toString() 96 | { 97 | final StringBuffer sb = new StringBuffer("Notice{"); 98 | sb.append("id=").append(id); 99 | sb.append(", title='").append(title).append('\''); 100 | sb.append(", content='").append(content).append('\''); 101 | sb.append(", createBy='").append(createBy).append('\''); 102 | sb.append(", status=").append(status); 103 | sb.append(", type=").append(type); 104 | sb.append(", createTime=").append(createTime); 105 | sb.append('}'); 106 | return sb.toString(); 107 | } 108 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/Position.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | import com.yj.oa.framework.web.po.BasePo; 4 | 5 | import java.util.Date; 6 | 7 | public class Position extends BasePo{ 8 | private Integer positionId; 9 | 10 | private String positionName; 11 | private String descr; 12 | 13 | private Integer status; 14 | 15 | private Date createTime; 16 | 17 | public String getDescr() 18 | { 19 | return descr; 20 | } 21 | 22 | public void setDescr(String descr) 23 | { 24 | this.descr = descr; 25 | } 26 | 27 | public Integer getPositionId() { 28 | return positionId; 29 | } 30 | 31 | public void setPositionId(Integer positionId) { 32 | this.positionId = positionId; 33 | } 34 | 35 | public String getPositionName() { 36 | return positionName; 37 | } 38 | 39 | public void setPositionName(String positionName) { 40 | this.positionName = positionName == null ? null : positionName.trim(); 41 | } 42 | 43 | public Integer getStatus() { 44 | return status; 45 | } 46 | 47 | public void setStatus(Integer status) { 48 | this.status = status; 49 | } 50 | 51 | public Date getCreateTime() { 52 | return createTime; 53 | } 54 | 55 | public void setCreateTime(Date createTime) { 56 | this.createTime = createTime; 57 | } 58 | 59 | @Override 60 | public String toString() { 61 | StringBuilder sb = new StringBuilder(); 62 | sb.append(getClass().getSimpleName()); 63 | sb.append(" ["); 64 | sb.append("Hash = ").append(hashCode()); 65 | sb.append(", positionId=").append(positionId); 66 | sb.append(", positionName=").append(positionName); 67 | sb.append(", status=").append(status); 68 | sb.append(", createTime=").append(createTime); 69 | sb.append("]"); 70 | return sb.toString(); 71 | } 72 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/ScheduleUser.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | public class ScheduleUser { 4 | private Integer id; 5 | 6 | private Integer sId; 7 | 8 | private String suId; 9 | 10 | public Integer getId() { 11 | return id; 12 | } 13 | 14 | public void setId(Integer id) { 15 | this.id = id; 16 | } 17 | 18 | public Integer getsId() { 19 | return sId; 20 | } 21 | 22 | public void setsId(Integer sId) { 23 | this.sId = sId; 24 | } 25 | 26 | public String getSuId() { 27 | return suId; 28 | } 29 | 30 | public void setSuId(String suId) { 31 | this.suId = suId == null ? null : suId.trim(); 32 | } 33 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/Tel.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | public class Tel { 4 | private Integer id; 5 | 6 | private String userid; 7 | 8 | private String username; 9 | 10 | private Integer deptname; 11 | 12 | private String tel; 13 | 14 | private String email; 15 | 16 | private String status; 17 | 18 | public Integer getId() { 19 | return id; 20 | } 21 | 22 | public void setId(Integer id) { 23 | this.id = id; 24 | } 25 | 26 | public String getUserid() { 27 | return userid; 28 | } 29 | 30 | public void setUserid(String userid) { 31 | this.userid = userid == null ? null : userid.trim(); 32 | } 33 | 34 | public String getUsername() { 35 | return username; 36 | } 37 | 38 | public void setUsername(String username) { 39 | this.username = username == null ? null : username.trim(); 40 | } 41 | 42 | public Integer getDeptname() { 43 | return deptname; 44 | } 45 | 46 | public void setDeptname(Integer deptname) { 47 | this.deptname = deptname; 48 | } 49 | 50 | public String getTel() { 51 | return tel; 52 | } 53 | 54 | public void setTel(String tel) { 55 | this.tel = tel == null ? null : tel.trim(); 56 | } 57 | 58 | public String getEmail() { 59 | return email; 60 | } 61 | 62 | public void setEmail(String email) { 63 | this.email = email == null ? null : email.trim(); 64 | } 65 | 66 | public String getStatus() { 67 | return status; 68 | } 69 | 70 | public void setStatus(String status) { 71 | this.status = status == null ? null : status.trim(); 72 | } 73 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/UserMeet.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po; 2 | 3 | public class UserMeet { 4 | private Integer id; 5 | 6 | private Integer meetId; 7 | 8 | private String userId; 9 | 10 | public Integer getId() 11 | { 12 | return id; 13 | } 14 | 15 | public void setId(Integer id) 16 | { 17 | this.id = id; 18 | } 19 | 20 | public Integer getMeetId() 21 | { 22 | return meetId; 23 | } 24 | 25 | public void setMeetId(Integer meetId) 26 | { 27 | this.meetId = meetId; 28 | } 29 | 30 | public String getUserId() 31 | { 32 | return userId; 33 | } 34 | 35 | public void setUserId(String userId) 36 | { 37 | this.userId = userId; 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/dto/MenuTree.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po.dto; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author 永健 7 | */ 8 | public class MenuTree{ 9 | private Integer id; 10 | 11 | private String name; 12 | 13 | private Integer pid; 14 | 15 | private String url; 16 | 17 | 18 | private String icon; 19 | 20 | private List children; 21 | 22 | public Integer getId() 23 | { 24 | return id; 25 | } 26 | 27 | public void setId(Integer id) 28 | { 29 | this.id = id; 30 | } 31 | 32 | public String getName() 33 | { 34 | return name; 35 | } 36 | 37 | public void setName(String name) 38 | { 39 | this.name = name; 40 | } 41 | 42 | public Integer getPid() 43 | { 44 | return pid; 45 | } 46 | 47 | public void setPid(Integer pid) 48 | { 49 | this.pid = pid; 50 | } 51 | 52 | public String getUrl() 53 | { 54 | return url; 55 | } 56 | 57 | public void setUrl(String url) 58 | { 59 | this.url = url; 60 | } 61 | 62 | public String getIcon() 63 | { 64 | return icon; 65 | } 66 | 67 | public void setIcon(String icon) 68 | { 69 | this.icon = icon; 70 | } 71 | 72 | public List getChildren() 73 | { 74 | return children; 75 | } 76 | 77 | public void setChildren(List children) 78 | { 79 | this.children = children; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/po/dto/PermTree.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.po.dto; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author 永健 7 | */ 8 | public class PermTree{ 9 | private int id; 10 | private String name; 11 | /** 12 | * 默认不选中 13 | */ 14 | private String checked="false"; 15 | private List children; 16 | 17 | public int getId() 18 | { 19 | return id; 20 | } 21 | 22 | public void setId(int id) 23 | { 24 | this.id = id; 25 | } 26 | 27 | public String getName() 28 | { 29 | return name; 30 | } 31 | 32 | public void setName(String name) 33 | { 34 | this.name = name; 35 | } 36 | 37 | public String getChecked() 38 | { 39 | return checked; 40 | } 41 | 42 | public void setChecked(String checked) 43 | { 44 | this.checked = checked; 45 | } 46 | 47 | public List getChildren() 48 | { 49 | return children; 50 | } 51 | 52 | public void setChildren(List children) 53 | { 54 | this.children = children; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/actUtil/ActUtil.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.actUtil; 2 | 3 | import com.yj.oa.common.constant.CsEnum; 4 | 5 | import java.util.HashMap; 6 | import java.util.Map; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public class ActUtil{ 12 | 13 | 14 | /** 15 | * 16 | * @描述: 启动流程时候 设置启动人和代理人 变量 17 | * 18 | * @params: 19 | * @return: 20 | * @date: 2018/9/24 14:29 21 | */ 22 | public static Map setStartVariable(String uId,String AgentId) 23 | { 24 | Map map = new HashMap<>(2); 25 | //任务节点代理人 26 | map.put(CsEnum.activiti.AGENT.getValue(), uId); 27 | //下一个代理人 28 | map.put(CsEnum.activiti.INITIATOR.getValue(), uId); 29 | return map; 30 | } 31 | 32 | 33 | 34 | /** 35 | * 36 | * @描述: 完成当前节点任务后 设置下一个节点的任务消息 代理人和表单id 37 | * 38 | * @params: 39 | * @return: 40 | * @date: 2018/9/24 14:28 41 | */ 42 | public static Map setNextTaskVariable(String AgentId,String formKey) 43 | { 44 | Map map = new HashMap<>(2); 45 | //任务节点代理人 46 | map.put(CsEnum.activiti.AGENT.getValue(), AgentId); 47 | //下一个代理人 48 | map.put(CsEnum.activiti.FORMID.getValue(), formKey); 49 | return map; 50 | } 51 | 52 | /** 53 | * 54 | * @描述: 通过历史实例的 busseniess_Key中拿到表单id 从中获取 55 | * 56 | * @params: 57 | * @return: 58 | * @date: 2018/9/23 14:46 59 | */ 60 | public static String getFormKeyFromHi(String businessKey) 61 | { 62 | int i = businessKey.lastIndexOf(":"); 63 | String FormId=businessKey.substring(i+1,businessKey.length()); 64 | return FormId; 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/applyRoom/IActApplyRoomFormService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.applyRoom; 2 | 3 | import com.yj.oa.project.po.ApplyRoomForm; 4 | import org.activiti.engine.task.Task; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | * 预约申请会议室 方法接口 11 | */ 12 | public interface IActApplyRoomFormService{ 13 | 14 | /** 15 | * @ 描述 提交申请 16 | * @date 2018/9/21 16:09 17 | */ 18 | public void apply(ApplyRoomForm applyRoom); 19 | 20 | 21 | 22 | /** 23 | * 24 | * @描述: 删除 25 | * 26 | * @params: 27 | * @return: 28 | * @date: 2018/9/26 15:26 29 | */ 30 | int deleteByPrimaryKeys(String[] ids)throws Exception; 31 | 32 | /** 33 | *主键查询 34 | * 35 | * @mbggenerated 36 | */ 37 | ApplyRoomForm selectByPrimaryKey(String id); 38 | 39 | /** 40 | * 修改状态 41 | * @mbggenerated 42 | */ 43 | int updateByPrimaryKeySelective(ApplyRoomForm record); 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/hiActInst/ActHiActInstServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.hiActInst; 2 | 3 | import com.yj.oa.project.mapper.ActHiActinstMapper; 4 | import com.yj.oa.project.po.ActHiActinst; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | @Service 15 | @Transactional 16 | public class ActHiActInstServiceImpl implements IActHiActInstService{ 17 | 18 | @Autowired 19 | ActHiActinstMapper actHiActinstMapper; 20 | 21 | /** 22 | * 23 | * @描述: 通过 实例Id 删除与该实例历史活动相关信息 24 | * 25 | * @params: 26 | * @return: 27 | * @date: 2018/9/23 20:49 28 | */ 29 | @Override 30 | public int deleteByProcInstId(String[] procInstIds) 31 | { 32 | return actHiActinstMapper.deleteByProcInstId(procInstIds); 33 | } 34 | 35 | /** 36 | * 37 | * @描述: 通过实例Id 获取该活动信息 38 | * 39 | * @params: 40 | * @return: 41 | * @date: 2018/9/23 20:50 42 | */ 43 | @Override 44 | public List selectByByProcInstId(String procInstId) 45 | { 46 | return actHiActinstMapper.selectByByProcInstId(procInstId); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/hiActInst/IActHiActInstService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.hiActInst; 2 | 3 | import com.yj.oa.project.po.ActHiActinst; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IActHiActInstService{ 11 | 12 | /** 13 | * 14 | * @描述: 删除活动历史信息 15 | * 16 | * @params: 17 | * @return: 18 | * @date: 2018/9/23 20:45 19 | */ 20 | int deleteByProcInstId(String[] procInstId); 21 | 22 | /** 23 | * 24 | * @描述: 根据进程实例id获取当前 实例的活动信息 25 | * 26 | * @params: 27 | * @return: 28 | * @date: 2018/9/23 20:45 29 | */ 30 | List selectByByProcInstId(String procInstId); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/hiTaskInst/IActHiTaskinistService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.hiTaskInst; 2 | 3 | import com.yj.oa.project.po.ActHiProcinst; 4 | import com.yj.oa.project.po.ActHiTaskInst; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface IActHiTaskinistService{ 12 | /** 13 | * 14 | * @描述: 删除批量 15 | * 16 | * @params: 17 | * @return: 18 | * @date: 2018/9/23 16:01 19 | */ 20 | int deleteByPrimaryKeys(String[] ids) throws Exception; 21 | 22 | /** 23 | * 24 | * @描述: 主键查询 25 | * 26 | * @params: 27 | * @return: 28 | * @date: 2018/9/23 16:02 29 | */ 30 | ActHiTaskInst selectByPrimaryKey(String id); 31 | 32 | /** 33 | * 34 | * @描述: 根据审批人查询历史审批记录 35 | * 36 | * @params: 37 | * @return: 38 | * @date: 2018/9/23 16:02 39 | */ 40 | List selectActHiTaskInstList(ActHiTaskInst actHiTaskInst); 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/hiprocInst/ActHiProcinstServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.hiprocInst; 2 | 3 | import com.yj.oa.project.mapper.ActHiProcinstMapper; 4 | import com.yj.oa.project.po.ActHiProcinst; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | @Service 15 | @Transactional 16 | public class ActHiProcinstServiceImpl implements IActHiProcinstService{ 17 | 18 | 19 | @Autowired 20 | ActHiProcinstMapper actHiProcinstMapper; 21 | 22 | 23 | /** 24 | * 25 | * @描述 : 批量删除 26 | * 27 | * @params: 28 | * @return: 29 | * @date: 2018/9/23 12:30 30 | */ 31 | 32 | @Override 33 | public int deleteByPrimaryKeys(String[] id) 34 | { 35 | return actHiProcinstMapper.deleteByPrimaryKeys(id); 36 | } 37 | 38 | /** 39 | * 40 | * @描述:根据主键查询 41 | * 42 | * @params: 43 | * @return: 44 | * @date: 2018/9/23 12:29 45 | */ 46 | @Override 47 | public ActHiProcinst selectByPrimaryKey(String id) 48 | { 49 | return actHiProcinstMapper.selectByPrimaryKey(id); 50 | } 51 | 52 | /** 53 | * 54 | * @描述: 根据实例id查询 判断是否已经结束了改流程 55 | * 56 | * @params: 57 | * @return: 58 | * @date: 2018/9/23 15:19 59 | */ 60 | @Override 61 | public ActHiProcinst selectByProcInstId(String procInstId) 62 | { 63 | return actHiProcinstMapper.selectByProcInstId(procInstId); 64 | } 65 | 66 | 67 | /** 68 | * 69 | * @描述: 列表 70 | * 71 | * @params: 72 | * @return: 73 | * @date: 2018/9/23 12:30 74 | */ 75 | @Override 76 | public List selectActHiProcinstList(ActHiProcinst actHiProcinst) 77 | { 78 | return actHiProcinstMapper.selectActHiProcinstList(actHiProcinst); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/hiprocInst/IActHiProcinstService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.hiprocInst; 2 | 3 | import com.yj.oa.project.po.ActHiProcinst; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IActHiProcinstService{ 11 | /** 12 | * @ 描述 批量删除 13 | * @ param id 14 | * @date 2018/9/23 11:59 15 | */ 16 | int deleteByPrimaryKeys(String[] id); 17 | 18 | /** 19 | * @ 描述 根据主键查询 20 | * @date 2018/9/23 12:01 21 | */ 22 | ActHiProcinst selectByPrimaryKey(String id); 23 | 24 | /** 25 | * 26 | * @描述: 根据实例id查询 判断改实例是否已经结束 27 | * 28 | * @params: 29 | * @return: 30 | * @date: 2018/9/23 15:18 31 | */ 32 | ActHiProcinst selectByProcInstId(String procInstId); 33 | 34 | 35 | /** 36 | * @ 描述 列表 37 | * @date 2018/9/23 12:02 38 | */ 39 | List selectActHiProcinstList(ActHiProcinst actHiProcinst); 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/ACT/task/IActTaskService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.ACT.task; 2 | 3 | 4 | import com.yj.oa.project.po.ActTask; 5 | import com.yj.oa.project.po.ApplyRoomForm; 6 | import com.yj.oa.project.po.LeaveForm; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | public interface IActTaskService{ 15 | /** 16 | * 17 | * @描述 任务列表 18 | * 19 | * @date 2018/9/21 22:47 20 | */ 21 | List selectACTTaskList(ActTask record); 22 | 23 | /** 24 | * 25 | * @描述: 请假审批 26 | * 27 | * @params: 28 | * @return: 29 | * @date: 2018/9/24 17:20 30 | */ 31 | 32 | public void LeaveApproval(LeaveForm leaveForm, String taskId); 33 | 34 | public void RoomApproval(ApplyRoomForm applyRoomForm, String taskId) throws Exception; 35 | /** 36 | * 37 | * @描述: 删除任务 38 | * 39 | * @params: 40 | * @return: 41 | * @date: 2018/9/26 14:50 42 | */ 43 | public int deletByProcInstS(String[] ids); 44 | 45 | 46 | /** 47 | * 48 | * @描述 通过任务Id 获取当前节点的所有信息 49 | * 50 | * @date 2018/9/22 11:35 51 | */ 52 | Map getCurrentView(String taskId); 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/attend/IAttendService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.attend; 2 | 3 | import com.yj.oa.project.po.Attend; 4 | import com.yj.oa.project.po.OperLog; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface IAttendService{ 12 | int deleteByPrimaryKeys(Integer[] id); 13 | 14 | int insertSelective(Attend record) throws Exception; 15 | 16 | Attend selectByPrimaryKey(Integer id); 17 | 18 | int updateByPrimaryKey(Attend record); 19 | List selectAttendList(Attend attend); 20 | 21 | Attend selectSaveDayIsAttend(String userId); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/attendCount/IAttendCountService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.attendCount; 2 | 3 | import com.yj.oa.project.po.AttendCount; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IAttendCountService{ 11 | int deleteByPrimaryKeys(Integer[] id); 12 | 13 | void insertSelective(); 14 | 15 | AttendCount selectByPrimaryKey(Integer id); 16 | 17 | int updateByPrimaryKeySelective(AttendCount record); 18 | 19 | List selectAttendCountList(AttendCount attend); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/dept/IDeptService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.dept; 2 | 3 | import com.yj.oa.project.po.Dept; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | * @date 2018/9/15 13:40 10 | * @描述 11 | */ 12 | public interface IDeptService { 13 | /** 14 | * This method was generated by MyBatis Generator. 15 | * This method corresponds to the database table t_dept 16 | * 17 | * @mbggenerated 18 | */ 19 | int deleteByPrimaryKeys(String[] depId) throws Exception ; 20 | 21 | 22 | 23 | /** 24 | * This method was generated by MyBatis Generator. 25 | * This method corresponds to the database table t_dept 26 | * 27 | * @mbggenerated 28 | */ 29 | int insertSelective(Dept record); 30 | 31 | /** 32 | * This method was generated by MyBatis Generator. 33 | * This method corresponds to the database table t_dept 34 | * 35 | * @mbggenerated 36 | */ 37 | Dept selectByPrimaryKey(String depId); 38 | 39 | /** 40 | * This method was generated by MyBatis Generator. 41 | * This method corresponds to the database table t_dept 42 | * 43 | * @mbggenerated 44 | */ 45 | int updateByPrimaryKeySelective(Dept record) throws Exception; 46 | 47 | /** 48 | * 49 | * @描述 部门列表 50 | * 51 | * @date 2018/9/15 13:39 52 | */ 53 | List selectDeptList(Dept dept); 54 | 55 | /** 56 | * 校验部门名称是否唯一 57 | * 58 | * @param dept 部门信息 59 | * @return 结果 60 | */ 61 | public String checkDeptNameUnique(Dept dept); 62 | 63 | /** 64 | * 65 | * @描述: 查询所有部门下的所有用户 用户归类 树状数据 66 | * 67 | * @date: 2018/9/27 11:25 68 | */ 69 | List selectDeptAndUser(); 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/file/IFileService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.file; 2 | 3 | import com.yj.oa.project.po.Files; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IFileService{ 11 | /** 12 | * 13 | * @描述 添加 14 | * 15 | * @date 2018/9/19 11:57 16 | */ 17 | public int insertSelective(Files file); 18 | 19 | /** 20 | * 21 | * @描述 删除 22 | * 23 | * @date 2018/9/19 11:57 24 | */ 25 | public int deleteByPrimaryKeys(String[] ids); 26 | 27 | /** 28 | * 29 | * @描述 列表 30 | * 31 | * @date 2018/9/19 12:07 32 | */ 33 | List selectFileList(Files file); 34 | 35 | void downloadCountAddOne(Files files); 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/file/IFileServiceIml.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.file; 2 | 3 | import com.yj.oa.project.mapper.FilesMapper; 4 | import com.yj.oa.project.po.Files; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author 永健 15 | * 16 | */ 17 | @Service 18 | @Transactional 19 | public class IFileServiceIml implements IFileService{ 20 | 21 | private Logger log= LoggerFactory.getLogger(IFileServiceIml.class); 22 | 23 | @Autowired 24 | private FilesMapper fileMapper; 25 | 26 | /** 27 | * 28 | * @描述 添加 29 | * 30 | * @date 2018/9/19 12:00 31 | */ 32 | @Override 33 | public int insertSelective(Files file) 34 | { 35 | return fileMapper.insertSelective(file); 36 | } 37 | 38 | /** 39 | * 40 | * @描述 删除 41 | * 42 | * @date 2018/9/19 12:00 43 | */ 44 | @Override 45 | public int deleteByPrimaryKeys(String[] ids) 46 | { 47 | try 48 | { 49 | return fileMapper.deleteByPrimaryKeys(ids); 50 | } 51 | catch (Exception e) 52 | { 53 | log.error("$$$$$ 删除文件失败=[{}]",e); 54 | throw new RuntimeException("操作失败!"); 55 | } 56 | } 57 | 58 | /** 59 | * 60 | * @描述 列表 61 | * 62 | * @date 2018/9/19 12:08 63 | */ 64 | @Override 65 | public List selectFileList(Files file) 66 | { 67 | return fileMapper.selectFileList(file); 68 | } 69 | 70 | /** 71 | * 下载数量加一 72 | * @param fileId 73 | */ 74 | @Override 75 | public void downloadCountAddOne(Files files) 76 | { 77 | fileMapper.updateByPrimaryKeySelective(files); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/leavForm/ILeavFormService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.leavForm; 2 | 3 | import com.yj.oa.project.po.LeaveForm; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface ILeavFormService{ 11 | /** 12 | * 13 | * 批量删除 14 | * @mbggenerated 15 | */ 16 | int deleteByPrimaryKeys(String[] ids) throws Exception; 17 | 18 | /** 19 | *添加 20 | * @mbggenerated 21 | */ 22 | void insertSelective(LeaveForm record); 23 | 24 | /** 25 | *主键查询 26 | * 27 | * @mbggenerated 28 | */ 29 | LeaveForm selectByPrimaryKey(Integer id); 30 | 31 | /** 32 | * 修改状态 33 | * @mbggenerated 34 | */ 35 | int updateByPrimaryKeySelective(LeaveForm record); 36 | 37 | 38 | /** 39 | * 列表 40 | * @mbggenerated 41 | */ 42 | List selectLeavFormList(LeaveForm leaveForm); 43 | 44 | 45 | /** 46 | * 填写表单 47 | * @mbggenerated 48 | */ 49 | void fillForm(LeaveForm leaveForm); 50 | 51 | /** 52 | * 提交表单 53 | * @mbggenerated 54 | */ 55 | void submit(String proceId); 56 | 57 | /** 58 | * 提交表单 59 | * @mbggenerated 60 | */ 61 | void giveUp(String proceId); 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/meet/IMeetService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.meet; 2 | 3 | import com.yj.oa.project.po.Meet; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IMeetService{ 11 | 12 | Meet selectByPrimaryKey(Integer id); 13 | 14 | int deleteByPrimaryKeys(Integer[] id); 15 | 16 | int insertSelective(Meet record,String[] userIds); 17 | 18 | int updateByPrimaryKeySelective(Meet record,String[] userIds); 19 | 20 | List selectByMeetList(Meet meet); 21 | 22 | List selectMyMeetList(String uId); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/meetRoom/IMeetingRoomService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.meetRoom; 2 | 3 | import com.yj.oa.project.po.MeetingRoom; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface IMeetingRoomService{ 11 | 12 | /** 13 | * 添加 14 | */ 15 | int insertSelective(MeetingRoom record); 16 | 17 | /** 18 | * 批量删除 19 | */ 20 | int deleteByPrimaryKeys(Integer[]ids); 21 | 22 | /** 23 | * 修改 24 | */ 25 | int updateByPrimaryKeySelective(MeetingRoom meetingRoom); 26 | 27 | /** 28 | * 列表查询 29 | */ 30 | List selectMeetRoomList(MeetingRoom meetingRoom); 31 | /** 32 | * 名字唯一性 33 | * @date 34 | */ 35 | String checkRoomNameUnique(MeetingRoom meetingRoom); 36 | 37 | /** 38 | * 主键查询 39 | * @date 40 | */ 41 | MeetingRoom selectByPrimaryKey(Integer id); 42 | /** 43 | * 房间名查询 44 | * @date 45 | */ 46 | MeetingRoom selectByRoomName(String roomName); 47 | 48 | /** 49 | * 根据房间名修改状态 房间名唯一 50 | * @date 51 | */ 52 | int updateByRoomName(MeetingRoom meetingRoom); 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/menu/IPermissionService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.menu; 2 | 3 | import com.yj.oa.project.po.dto.MenuTree; 4 | import com.yj.oa.project.po.dto.PermTree; 5 | import com.yj.oa.project.po.Permission; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @author 永健 11 | * @date 2018/9/16 16:50 12 | * @描述 13 | */ 14 | public interface IPermissionService { 15 | 16 | int deleteByPrimaryKeys(Integer[] permissionId) throws Exception; 17 | 18 | int insertSelective(Permission record); 19 | 20 | Permission selectByPrimaryKey(Integer permissionId); 21 | 22 | int updateByPrimaryKeySelective(Permission record); 23 | 24 | String checkMenuNameUnique(Permission permission); 25 | 26 | /** 27 | * 28 | * @描述 返回集合 29 | * 30 | * @date 2018/9/17 22:24 31 | */ 32 | List selectPersissionList(Permission record); 33 | 34 | List selectMenuTree(String uid); 35 | 36 | /** 37 | * 查询权限结构 38 | */ 39 | List selectPermTree(); 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/note/INoteService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.note; 2 | 3 | import com.yj.oa.project.po.Note; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | */ 10 | public interface INoteService{ 11 | int deleteByPrimaryKeys(Integer[] id); 12 | 13 | int insertSelective(Note record); 14 | 15 | Note selectByPrimaryKey(Integer id); 16 | 17 | int updateByPrimaryKeySelective(Note record); 18 | 19 | List selectNoteList(Note note); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/note/NoteServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.note; 2 | 3 | import com.yj.oa.project.mapper.NoteMapper; 4 | import com.yj.oa.project.po.Note; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | @Service 15 | @Transactional 16 | public class NoteServiceImpl implements INoteService{ 17 | @Autowired 18 | NoteMapper noteMapper; 19 | 20 | 21 | /** 22 | * 23 | * @描述: 批量删除 24 | * 25 | * @params: 26 | * @return: 27 | * @date: 2018/9/28 14:44 28 | */ 29 | @Override 30 | public int deleteByPrimaryKeys(Integer[] id) 31 | { 32 | return noteMapper.deleteByPrimaryKeys(id); 33 | } 34 | 35 | /** 36 | * 37 | * @描述: 添加 38 | * 39 | * @params: 40 | * @return: 41 | * @date: 2018/9/28 14:44 42 | */ 43 | @Override 44 | public int insertSelective(Note record) 45 | { 46 | return noteMapper.insertSelective(record); 47 | } 48 | 49 | 50 | /** 51 | * 52 | * @描述: 主键查询 53 | * 54 | * @params: 55 | * @return: 56 | * @date: 2018/9/28 14:44 57 | */ 58 | @Override 59 | public Note selectByPrimaryKey(Integer id) 60 | { 61 | return noteMapper.selectByPrimaryKey(id); 62 | } 63 | 64 | /** 65 | * 66 | * @描述: 修改 67 | * 68 | * @params: 69 | * @return: 70 | * @date: 2018/9/28 14:45 71 | */ 72 | @Override 73 | public int updateByPrimaryKeySelective(Note record) 74 | { 75 | return noteMapper.updateByPrimaryKeySelective(record); 76 | } 77 | 78 | /** 79 | * 80 | * @描述: 个人便签列表 81 | * 82 | * @params: 83 | * @return: 84 | * @date: 2018/9/28 14:50 85 | */ 86 | @Override 87 | public List selectNoteList(Note note) 88 | { 89 | return noteMapper.selectNoteList(note); 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/notice/INoticeService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.notice; 2 | 3 | import com.yj.oa.project.po.Notice; 4 | import com.yj.oa.project.po.Position; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface INoticeService{ 12 | /** 13 | * 14 | * @描述 批量删除 15 | * 16 | * @date 2018/9/18 20:15 17 | */ 18 | int deleteByPrimaryKeys(Integer[] positionId) throws Exception; 19 | 20 | /** 21 | * 22 | * @描述插入 23 | * 24 | * @date 2018/9/18 20:15 25 | */ 26 | int insertSelective(Notice record); 27 | 28 | /** 29 | * 30 | * @描述 根据id查询 31 | * 32 | * @date 2018/9/18 20:15 33 | */ 34 | Notice selectByPrimaryKey(Integer id); 35 | 36 | /** 37 | * 38 | * @描述 修改 39 | * 40 | * @date 2018/9/18 20:15 41 | */ 42 | int updateByPrimaryKeySelective(Notice record); 43 | 44 | List selectNoticeList(Notice record); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/notice/NoticeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.notice; 2 | 3 | import com.yj.oa.project.mapper.NoticeMapper; 4 | import com.yj.oa.project.po.Notice; 5 | import com.yj.oa.project.po.Position; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * @author 永健 16 | */ 17 | @Service 18 | @Transactional 19 | public class NoticeServiceImpl implements INoticeService{ 20 | private Logger log= LoggerFactory.getLogger(NoticeServiceImpl.class); 21 | 22 | @Autowired 23 | NoticeMapper noticeMapper; 24 | 25 | /** 26 | * 27 | * @描述 批量删除 28 | * 29 | * @date 2018/9/18 21:13 30 | */ 31 | @Override 32 | public int deleteByPrimaryKeys(Integer[] positionId) throws RuntimeException 33 | { 34 | try 35 | { 36 | return noticeMapper.deleteByPrimaryKeys(positionId); 37 | } 38 | catch (RuntimeException e) 39 | { 40 | log.error("$$$$$ 删除公失败=[{}]",e); 41 | throw new RuntimeException("操作失败!"); 42 | } 43 | } 44 | 45 | /** 46 | * 47 | * @描述 天加 48 | * 49 | * @date 2018/9/18 20:19 50 | */ 51 | @Override 52 | public int insertSelective(Notice record) 53 | { 54 | return noticeMapper.insertSelective(record); 55 | } 56 | 57 | 58 | /** 59 | * 60 | * @描述 根据id查 61 | * 62 | * @date 2018/9/18 20:19 63 | */ 64 | @Override 65 | public Notice selectByPrimaryKey(Integer id) 66 | { 67 | return noticeMapper.selectByPrimaryKey(id); 68 | } 69 | 70 | /** 71 | * 72 | * @描述 修改 73 | * 74 | * @date 2018/9/18 20:20 75 | */ 76 | @Override 77 | public int updateByPrimaryKeySelective(Notice record) 78 | { 79 | return noticeMapper.updateByPrimaryKeySelective(record); 80 | } 81 | 82 | /** 83 | * 84 | * @描述 公告列表 85 | * 86 | * @date 2018/9/18 20:20 87 | */ 88 | @Override 89 | public List selectNoticeList(Notice record) 90 | { 91 | return noticeMapper.selectNoticeList(record); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/operlog/IOperLogService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.operlog; 2 | 3 | import com.yj.oa.project.po.Notice; 4 | import com.yj.oa.project.po.OperLog; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface IOperLogService{ 12 | int deleteByPrimaryKeys(Integer[] id); 13 | 14 | int insertSelective(OperLog record); 15 | 16 | OperLog selectByPrimaryKey(Integer id); 17 | 18 | int updateByPrimaryKeySelective(OperLog record); 19 | 20 | List selectOperLogList(OperLog operLog); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/operlog/OperLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.operlog; 2 | 3 | import com.yj.oa.project.mapper.OperLogMapper; 4 | import com.yj.oa.project.po.OperLog; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * @author 永健 15 | */ 16 | @Service 17 | @Transactional 18 | public class OperLogServiceImpl implements IOperLogService{ 19 | private Logger log= LoggerFactory.getLogger(OperLogServiceImpl.class); 20 | 21 | @Autowired 22 | OperLogMapper operLogMapper; 23 | 24 | /** 25 | * 26 | * @描述 批量删除 27 | * 28 | * @date 2018/9/18 21:13 29 | */ 30 | @Override 31 | public int deleteByPrimaryKeys(Integer[] positionId) throws RuntimeException 32 | { 33 | try 34 | { 35 | return operLogMapper.deleteByPrimaryKeys(positionId); 36 | } 37 | catch (RuntimeException e) 38 | { 39 | log.error("$$$$$ 删除公失败=[{}]",e); 40 | throw new RuntimeException("操作失败!"); 41 | } 42 | } 43 | 44 | /** 45 | * 46 | * @描述 天加 47 | * 48 | * @date 2018/9/18 20:19 49 | */ 50 | @Override 51 | public int insertSelective(OperLog record) 52 | { 53 | System.out.println(record); 54 | return operLogMapper.insertSelective(record); 55 | } 56 | 57 | 58 | /** 59 | * 60 | * @描述 根据id查 61 | * 62 | * @date 2018/9/18 20:19 63 | */ 64 | @Override 65 | public OperLog selectByPrimaryKey(Integer id) 66 | { 67 | return operLogMapper.selectByPrimaryKey(id); 68 | } 69 | 70 | /** 71 | * 72 | * @描述 修改 73 | * 74 | * @date 2018/9/18 20:20 75 | */ 76 | @Override 77 | public int updateByPrimaryKeySelective(OperLog record) 78 | { 79 | return operLogMapper.updateByPrimaryKeySelective(record); 80 | } 81 | 82 | /** 83 | * 84 | * @描述 列表 85 | * 86 | * @date 2018/9/18 20:20 87 | */ 88 | @Override 89 | public List selectOperLogList(OperLog record) 90 | { 91 | return operLogMapper.selectOperLogList(record); 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/position/IPositionService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.position; 2 | 3 | import com.yj.oa.project.po.Permission; 4 | import com.yj.oa.project.po.Position; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | * @date 2018/9/15 14:34 11 | * @描述 12 | */ 13 | public interface IPositionService { 14 | /** 15 | * 16 | * @描述 根据主键删除 17 | * 18 | * @date 2018/9/18 19:32 19 | */ 20 | int deleteByPrimarysKey(Integer[] positionId); 21 | 22 | 23 | /** 24 | * 25 | * @描述 插入 26 | * 27 | * @date 2018/9/18 19:32 28 | */ 29 | int insertSelective(Position record); 30 | 31 | /** 32 | * 33 | * @描述 根据主键查询 34 | * 35 | * @date 2018/9/18 19:33 36 | */ 37 | Position selectByPrimaryKey(Integer positionId); 38 | 39 | /** 40 | * 41 | * @描述 字段不为空更新 42 | * 43 | * @date 2018/9/18 19:33 44 | */ 45 | int updateByPrimaryKeySelective(Position record); 46 | 47 | 48 | /** 49 | * 50 | * @描述 根据对象所有字段查询 51 | * 52 | * @date 2018/9/18 19:34 53 | */ 54 | List selectPositionList(Position position); 55 | 56 | 57 | /** 58 | * 59 | * @描述 校验名称是否唯一 60 | * 61 | * @date 2018/9/18 19:51 62 | */ 63 | String checkPositionNameUnique(Position position); 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/role/IRoleService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.role; 2 | 3 | import com.yj.oa.project.po.Role; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | * @date 2018/9/15 13:04 10 | * @描述 11 | */ 12 | public interface IRoleService { 13 | /** 14 | * 添加 15 | * @param record 16 | * @param perIds 17 | * @return 18 | * @throws Exception 19 | */ 20 | int insert(Role record,Integer[] perIds) throws Exception; 21 | 22 | 23 | 24 | /** 25 | * @描述 查询所有 26 | * @date 2018/9/15 13:05 27 | */ 28 | 29 | List selectRoleList(Role role); 30 | 31 | /** 32 | * @描述唯一性 33 | * @date 2018/9/16 15:58 34 | */ 35 | String checkRoleNameUnique(Role role); 36 | 37 | /** 38 | * 39 | * @描述 批量删除 40 | * 41 | * @date 2018/9/16 15:58 42 | */ 43 | int deleteByPrimaryKeys(Integer[] ids) throws Exception; 44 | 45 | /** 46 | * 主键查询 47 | * @param roleId 48 | * @return 49 | */ 50 | Role selectByPrimaryKey(Integer roleId); 51 | 52 | /** 53 | * 修改 54 | * @param role 55 | * @return 56 | * @throws Exception 57 | */ 58 | int updateByPrimaryKeySelective(Role role)throws Exception; 59 | 60 | /** 61 | * 修改角色权限 62 | * @param role 63 | * @param ids 64 | * @return 65 | */ 66 | int updateByPrimaryKeyPowerSelective(Role role,Integer[] ids); 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/schedule/IScheduleService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.schedule; 2 | 3 | import com.yj.oa.project.po.Note; 4 | import com.yj.oa.project.po.Schedule; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface IScheduleService{ 12 | int deleteByPrimaryKeys(Integer[] id); 13 | 14 | int insertSelective(Schedule record,String[] userIds); 15 | 16 | Schedule selectByPrimaryKey(Integer id); 17 | 18 | int updateByPrimaryKeySelective(Schedule record,String[] userIds); 19 | 20 | List selectScheduleList(Schedule schedule); 21 | 22 | int updateComplete(Schedule schedule); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/tel/ITelService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.tel; 2 | 3 | import com.yj.oa.project.po.Note; 4 | import com.yj.oa.project.po.Tel; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface ITelService{ 12 | int deleteByPrimaryKeys(Integer[] id); 13 | 14 | int insertSelective(Tel record); 15 | 16 | Tel selectByPrimaryKey(Integer id); 17 | 18 | int updateByPrimaryKeySelective(Tel record); 19 | 20 | List selectTelList(Tel tel); 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/tel/TelServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.tel; 2 | 3 | import com.yj.oa.project.mapper.TelMapper; 4 | import com.yj.oa.project.po.Tel; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | import org.springframework.transaction.annotation.Transactional; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @author 永健 13 | */ 14 | @Service 15 | @Transactional 16 | public class TelServiceImpl implements ITelService{ 17 | @Autowired 18 | TelMapper telMapper; 19 | 20 | 21 | /** 22 | * 23 | * @描述: 批量删除 24 | * 25 | * @params: 26 | * @return: 27 | * @date: 2018/9/28 14:44 28 | */ 29 | @Override 30 | public int deleteByPrimaryKeys(Integer[] id) 31 | { 32 | return telMapper.deleteByPrimaryKeys(id); 33 | } 34 | 35 | 36 | /** 37 | * 38 | * @描述: 添加 39 | * 40 | * @params: 41 | * @return: 42 | * @date: 2018/9/28 14:44 43 | */ 44 | @Override 45 | public int insertSelective(Tel record) 46 | { 47 | return telMapper.insertSelective(record); 48 | } 49 | 50 | 51 | /** 52 | * 53 | * @描述: 主键查询 54 | * 55 | * @params: 56 | * @return: 57 | * @date: 2018/9/28 14:44 58 | */ 59 | @Override 60 | public Tel selectByPrimaryKey(Integer id) 61 | { 62 | return telMapper.selectByPrimaryKey(id); 63 | } 64 | 65 | /** 66 | * 67 | * @描述: 修改 68 | * 69 | * @params: 70 | * @return: 71 | * @date: 2018/9/28 14:45 72 | */ 73 | @Override 74 | public int updateByPrimaryKeySelective(Tel record) 75 | { 76 | return telMapper.updateByPrimaryKeySelective(record); 77 | } 78 | 79 | /** 80 | * 81 | * @描述: 个人便签列表 82 | * 83 | * @params: 84 | * @return: 85 | * @date: 2018/9/28 14:50 86 | */ 87 | @Override 88 | public List selectTelList(Tel Tel) 89 | { 90 | return telMapper.selectTelList(Tel); 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/user/IUserService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.user; 2 | 3 | import com.yj.oa.project.po.User; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author 永健 9 | * @date $date$ $time$ 10 | * @描述 11 | */ 12 | public interface IUserService { 13 | 14 | /** 15 | * 16 | * @描述: login登录验证 17 | * 18 | * @params: 19 | * @return: 20 | * @date: 2018/9/29 21:50 21 | */ 22 | User login(String uid); 23 | 24 | 25 | 26 | /** 27 | * This method was generated by MyBatis Generator. 28 | * This method corresponds to the database table t_user 29 | * 30 | * @mbggenerated 31 | */ 32 | int insertSelective(User record); 33 | 34 | /** 35 | * 36 | * 根据Id主键查询单个用户 登录用此方法 37 | * 38 | * @mbggenerated 39 | */ 40 | User selectByPrimaryKey(String uId); 41 | 42 | /** 43 | * This method was generated by MyBatis Generator. 44 | * This method corresponds to the database table t_user 45 | * 更改用户 46 | * @mbggenerated 47 | */ 48 | int updateByPrimaryKeySelective(User record); 49 | 50 | 51 | /* 52 | * 53 | * 批量删除用户 54 | * 55 | * */ 56 | int deleteByPrimaryKeys(String[] ids) throws Exception; 57 | 58 | /* 59 | * 60 | * 用户列表 以及 根据条件查询 61 | * 62 | * */ 63 | List selectByUser(User user); 64 | 65 | 66 | 67 | /** 68 | * 校验手机号码是否唯一 69 | * 70 | * @param user 用户信息 71 | * @return 结果 72 | */ 73 | String checkPhoneUnique(User user); 74 | 75 | /** 76 | * 校验email是否唯一 77 | * 78 | * @param user 用户信息 79 | * @return 结果 80 | */ 81 | String checkEmailUnique(User user); 82 | 83 | 84 | /** 85 | * 86 | * @描述 修改密码 87 | * 88 | * @date 2018/9/16 10:34 89 | */ 90 | int resrtPwd(User user); 91 | 92 | 93 | /** 94 | * 校验用户登录名是否唯一 95 | * 96 | * @param email 用户邮箱 97 | * 98 | * @return 结果 99 | */ 100 | String checkLoginNameUnique(User user); 101 | 102 | } 103 | -------------------------------------------------------------------------------- /src/main/java/com/yj/oa/project/service/workTime/IWorkTimeService.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa.project.service.workTime; 2 | 3 | import com.yj.oa.framework.web.po.AjaxResult; 4 | import com.yj.oa.project.po.WorkTime; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 永健 10 | */ 11 | public interface IWorkTimeService{ 12 | int deleteByPrimaryKeys(Integer[] id) throws Exception; 13 | 14 | int insertSelective(WorkTime record) throws Exception; 15 | 16 | WorkTime selectByPrimaryKey(Integer id); 17 | 18 | int updateByPrimaryKeySelective(WorkTime record) throws Exception; 19 | 20 | WorkTime selectUsing(); 21 | 22 | List selectWorkTimeList(WorkTime workTime); 23 | 24 | int startOrEndWorkTime(WorkTime workTime) throws Exception; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/resources/activiti.cf.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | #开发环境配置 2 | server: 3 | #端口 4 | port: 8880 5 | tomcat: 6 | uri-encoding: utf-8 7 | #日志配置 8 | logging: 9 | level: 10 | com.yj.oa.project.mapper: debug 11 | #数据源 12 | spring: 13 | datasource: 14 | url: jdbc:mysql://127.0.0.1:3306/oa?useUnicode=true&characterEncoding=utf8&useSSL=false 15 | username: root 16 | password: tiger 17 | type: com.alibaba.druid.pool.DruidDataSource 18 | driver-class-name: com.mysql.jdbc.Driver 19 | 20 | 21 | # MyBatis 22 | mybatis: 23 | mapper-locations: classpath:mapper/**/*.xml 24 | type-aliases-package: com.yj.oa.project.po 25 | configuration: 26 | map-underscore-to-camel-case: true 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/main/resources/ehcache.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 24 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mapper/ScheduleUserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | id, s_Id, su_id 11 | 12 | 13 | 14 | delete from t_schedule_user 15 | where s_Id IN 16 | 17 | #{id,jdbcType=INTEGER} 18 | 19 | 20 | 21 | 22 | insert into t_schedule_user 23 | (s_Id,su_Id) 24 | VALUES 25 | 26 | (#{su.sId},#{su.suId}) 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/resources/mapper/UserMeetMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | id, meet_Id, user_Id 11 | 12 | 13 | 14 | delete from t_user_meet 15 | where meet_Id IN 16 | 17 | #{id} 18 | 19 | 20 | 21 | 22 | INSERT INTO t_user_meet 23 | (meet_Id, user_Id) 24 | VALUES 25 | 26 | (#{um.meetId}, #{um.userId}) 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/mapper/UserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | insert into t_user_role (id, userId, roleId, 20 | u_r_Isdel) 21 | values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{roleId,jdbcType=INTEGER}, 22 | #{u_r_Isdel,jdbcType=INTEGER}) 23 | 24 | 25 | 29 | insert into t_user_role 30 | 31 | 32 | id, 33 | 34 | 35 | userId, 36 | 37 | 38 | roleId, 39 | 40 | 41 | u_r_Isdel, 42 | 43 | 44 | 45 | 46 | #{id,jdbcType=INTEGER}, 47 | 48 | 49 | #{userId,jdbcType=INTEGER}, 50 | 51 | 52 | #{roleId,jdbcType=INTEGER}, 53 | 54 | 55 | #{u_r_Isdel,jdbcType=INTEGER}, 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/main/resources/mapper/act/ActHiActinstMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | ID_, PROC_DEF_ID_, PROC_INST_ID_, EXECUTION_ID_, ACT_ID_, TASK_ID_, CALL_PROC_INST_ID_, 22 | ACT_NAME_, ACT_TYPE_, ASSIGNEE_, START_TIME_, END_TIME_, DURATION_, TENANT_ID_ 23 | 24 | 25 | 34 | 35 | 36 | delete 37 | from 38 | act_hi_actinst 39 | where 40 | PROC_INST_ID_ IN 41 | 42 | #{procInstId,jdbcType=VARCHAR} 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/main/resources/processes/apply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/processes/apply.png -------------------------------------------------------------------------------- /src/main/resources/processes/apply.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/processes/apply.zip -------------------------------------------------------------------------------- /src/main/resources/processes/leave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/processes/leave.png -------------------------------------------------------------------------------- /src/main/resources/processes/leave.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/processes/leave.zip -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/bootstrap-table/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.11.0 - 2016-07-02 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2016 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";a.extend(a.fn.bootstrapTable.defaults,{editable:!0,onEditableInit:function(){return!1},onEditableSave:function(){return!1},onEditableShown:function(){return!1},onEditableHidden:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"editable-init.bs.table":"onEditableInit","editable-save.bs.table":"onEditableSave","editable-shown.bs.table":"onEditableShown","editable-hidden.bs.table":"onEditableHidden"});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initTable,d=b.prototype.initBody;b.prototype.initTable=function(){var b=this;c.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&a.each(this.columns,function(c,d){if(d.editable){var e={},f=[],g="editable-",h=function(a,b){var c=a.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()});if(c.slice(0,g.length)==g){var d=c.replace(g,"data-");e[d]=b}};a.each(b.options,h),d.formatter=d.formatter||function(a){return a},d._formatter=d._formatter?d._formatter:d.formatter,d.formatter=function(c,g,i){var j=d._formatter?d._formatter(c,g,i):c;a.each(d,h),a.each(e,function(a,b){f.push(" "+a+'="'+b+'"')});var k=!1;return d.editable.hasOwnProperty("noeditFormatter")&&(k=d.editable.noeditFormatter(c,g,i)),k===!1?['"].join(""):k}}})},b.prototype.initBody=function(){var b=this;d.apply(this,Array.prototype.slice.apply(arguments)),this.options.editable&&(a.each(this.columns,function(c,d){d.editable&&(b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("save").on("save",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g],i=h[d.field];a(this).data("value",e.submitValue),h[d.field]=e.submitValue,b.trigger("editable-save",d.field,h,i,a(this)),b.resetFooter()}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("shown").on("shown",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-shown",d.field,h,a(this),e)}),b.$body.find('a[data-name="'+d.field+'"]').editable(d.editable).off("hidden").on("hidden",function(c,e){var f=b.getData(),g=a(this).parents("tr[data-index]").data("index"),h=f[g];b.trigger("editable-hidden",d.field,h,a(this),e)}))}),this.trigger("editable-init"))}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.11.0 - 2016-07-02 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2016 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(function(){a.resetView.call(a)},1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){this.options.minWidth<100&&this.options.resizable&&(console.log("The minWidth when the resizable extension is active should be greater or equal than 100"),this.options.minWidth=100);var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 'use strict'; 3 | 4 | $.fn.bootstrapTable.locales['zh-CN'] = { 5 | formatLoadingMessage: function () { 6 | return '正在努力地加载数据中,请稍候……'; 7 | }, 8 | formatRecordsPerPage: function (pageNumber) { 9 | return pageNumber + ' 条记录每页'; 10 | }, 11 | formatShowingRows: function (pageFrom, pageTo, totalRows) { 12 | return '第 ' + pageFrom + ' 到 ' + pageTo + ' 条,共 ' + totalRows + ' 条记录。'; 13 | }, 14 | formatSearch: function () { 15 | return '搜索'; 16 | }, 17 | formatNoMatches: function () { 18 | return '没有找到匹配的记录'; 19 | }, 20 | formatPaginationSwitch: function () { 21 | return '隐藏/显示分页'; 22 | }, 23 | formatRefresh: function () { 24 | return '刷新'; 25 | }, 26 | formatToggle: function () { 27 | return '切换'; 28 | }, 29 | formatColumns: function () { 30 | return '列'; 31 | }, 32 | formatExport: function () { 33 | return '导出数据'; 34 | }, 35 | formatClearFilters: function () { 36 | return '清空过滤'; 37 | } 38 | }; 39 | 40 | $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); 41 | 42 | })(jQuery); 43 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(pageNumber){return pageNumber+" 条记录每页"},formatShowingRows:function(pageFrom,pageTo,totalRows){return"第 "+pageFrom+" 到 "+pageTo+" 条,共 "+totalRows+" 条记录。"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"},formatExport:function(){return"导出数据"},formatClearFilters:function(){return"清空过滤"}};$.extend($.fn.bootstrapTable.defaults,$.fn.bootstrapTable.locales["zh-CN"])})(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-treetable.css: -------------------------------------------------------------------------------- 1 | .bootstrap-tree-table .treetable-indent {width:16px; height: 16px; display: inline-block; position: relative;} 2 | .bootstrap-tree-table .treetable-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;} 3 | .bootstrap-tree-table .treetable-selected{background: #f5f5f5 !important;} 4 | .bootstrap-tree-table .treetable-table{border:0 !important;margin-bottom:0} 5 | .bootstrap-tree-table .treetable-table tbody {display:block;height:auto;overflow-y:auto;} 6 | .bootstrap-tree-table .treetable-table thead, .treetable-table tbody tr {display:table;width:100%;table-layout:fixed;} 7 | .bootstrap-tree-table .treetable-thead th{line-height:24px;border: 0 !important;border-radius: 4px;border-left:0px solid #e7eaec !important;border-bottom:1px solid #ccc!important;text-align: center;} 8 | .bootstrap-tree-table .treetable-thead tr :first-child{border-left:0 !important} 9 | .bootstrap-tree-table .treetable-tbody td{border: 0 !important;border-left:0px solid #e7eaec !important;border-bottom:1px solid #e7eaec!important;overflow: hidden; white-space: nowrap; text-overflow: ellipsis;} 10 | .bootstrap-tree-table .treetable-tbody tr :first-child{border-left:0 !important} -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/custom.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green-login{ 18 | display: inline-block; 19 | *display: inline; 20 | vertical-align: middle; 21 | margin: 0; 22 | padding: 0; 23 | width: 22px; 24 | height: 22px; 25 | background: url(green-login.png) no-repeat; 26 | border: none; 27 | cursor: pointer; 28 | } 29 | 30 | .icheckbox_square-green,.icheckbox_square-green-login { 31 | background-position: 0 0; 32 | } 33 | .icheckbox_square-green.hover,.icheckbox_square-green-login.hover { 34 | background-position: -24px 0; 35 | } 36 | .icheckbox_square-green.checked,.icheckbox_square-green-login.checked { 37 | background-position: -48px 0; 38 | } 39 | .icheckbox_square-green.disabled,.icheckbox_square-green.disabled-login { 40 | background-position: -72px 0; 41 | cursor: default; 42 | } 43 | .icheckbox_square-green.checked.disabled,.icheckbox_square-green-login.checked.disabled { 44 | background-position: -96px 0; 45 | } 46 | 47 | .iradio_square-green { 48 | background-position: -120px 0; 49 | } 50 | .iradio_square-green.hover { 51 | background-position: -144px 0; 52 | } 53 | .iradio_square-green.checked { 54 | background-position: -168px 0; 55 | } 56 | .iradio_square-green.disabled { 57 | background-position: -192px 0; 58 | cursor: default; 59 | } 60 | .iradio_square-green.checked.disabled { 61 | background-position: -216px 0; 62 | } 63 | 64 | /* HiDPI support */ 65 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 66 | .icheckbox_square-green,.icheckbox_square-green-login, 67 | .iradio_square-green { 68 | background-image: url(green%402x.png); 69 | -webkit-background-size: 240px 24px; 70 | background-size: 240px 24px; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/iCheck/green-login.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/iCheck/green.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/iCheck/green@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jqTreeGrid/jquery.treegrid.css: -------------------------------------------------------------------------------- 1 | .treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;} 2 | 3 | .treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;} 4 | 5 | .treegrid-expander-expanded{background-image: url(img/collapse.png); } 6 | .treegrid-expander-collapsed{background-image: url(img/expand.png);} 7 | .treegrid-selected{background: #f5f5f5 !important;} 8 | .treegrid-table{border:0 !important;margin-bottom:0} 9 | .treegrid-table tbody {display:block;height:auto;overflow-y:auto;} 10 | .treegrid-table thead, .treegrid-table tbody tr {display:table;width:100%;table-layout:fixed;} 11 | .treegrid-thead th{line-height:40px;border: 0 !important;background:#f3f3f4 !important;border-radius: 4px;border-left:1px solid #e7eaec !important;border-bottom:2px solid #e7eaec !important;text-align: center;} 12 | .treegrid-thead tr :first-child{border-left:0 !important} 13 | .treegrid-tbody td{border: 0 !important;border-left:1px solid #e7eaec !important;border-bottom:1px solid #e7eaec !important;overflow: hidden; 14 | white-space: nowrap; 15 | text-overflow: ellipsis;} 16 | .treegrid-tbody tr :first-child{border-left:0 !important} -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_close.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_open.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/2.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/3.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/4.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/5.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/6.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/7.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/8.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/9.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/theme/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/theme/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/theme/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/theme/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/layer/theme/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/summernote/font/summernote.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/summernote/font/summernote.woff -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/summernote/summernote-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /*! Summernote v0.8.8 | (c) 2013- Alan Hong and other contributors | MIT license */ 2 | 3 | !function(a){a.extend(a.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},history:{undo:"撤销",redo:"重做"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"}}})}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/validate/messages_zh.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Validation Plugin - v1.13.1 - 10/14/2014 2 | * http://jqueryvalidation.org/ 3 | * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ 4 | ! function (a) { 5 | "function" == typeof define && define.amd ? define(["jquery", "jquery.validate.min"], a) : a(jQuery) 6 | }(function (a) { 7 | var icon = " "; 8 | a.extend(a.validator.messages, { 9 | required: icon + "必填", 10 | remote: icon + "请修正此栏位", 11 | email: icon + "请输入有效的电子邮件", 12 | url: icon + "请输入有效的网址", 13 | date: icon + "请输入有效的日期", 14 | dateISO: icon + "请输入有效的日期 (YYYY-MM-DD)", 15 | number: icon + "请输入正确的数字", 16 | digits: icon + "只能输入数字", 17 | creditcard: icon + "请输入有效的信用卡号码", 18 | equalTo: icon + "你的输入不相同", 19 | extension: icon + "请输入有效的后缀", 20 | maxlength: a.validator.format(icon + "最多 {0} 个字"), 21 | minlength: a.validator.format(icon + "最少 {0} 个字"), 22 | rangelength: a.validator.format(icon + "请输入长度为 {0} 至 {1} 之间的字串"), 23 | range: a.validator.format(icon + "请输入 {0} 至 {1} 之间的数值"), 24 | max: a.validator.format(icon + "请输入不大于 {0} 的数值"), 25 | min: a.validator.format(icon + "请输入不小于 {0} 的数值") 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/left_menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/left_menu.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/left_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/left_menu.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/fontawesome-webfont93e3.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/fontawesome-webfont93e3.ttf -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfontd41d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/fontawesome-webfontd41d.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regulard41d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/fonts/glyphicons-halflings-regulard41d.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/login.css: -------------------------------------------------------------------------------- 1 | html { 2 | height:100% 3 | } 4 | body.signin { 5 | height:auto; 6 | background:url(../img/login-background.jpg) no-repeat center fixed; 7 | -webkit-background-size:cover; 8 | -moz-background-size:cover; 9 | -o-background-size:cover; 10 | background-size:cover; 11 | color:rgba(255,255,255,.95) 12 | } 13 | .signinpanel { 14 | width:750px; 15 | margin:10% auto 0 16 | } 17 | .signinpanel .logopanel { 18 | float:none; 19 | width:auto; 20 | padding:0; 21 | background:0 0 22 | } 23 | .signinpanel .signin-info ul { 24 | list-style:none; 25 | padding:0; 26 | margin:20px 0 27 | } 28 | .signinpanel .form-control { 29 | display:block; 30 | margin-top:15px 31 | } 32 | .signinpanel .uname { 33 | background:#fff url(../img/user.png) no-repeat 95% center; 34 | color:#333 35 | } 36 | .signinpanel .pword { 37 | background:#fff url(../img/locked.png) no-repeat 95% center; 38 | color:#333 39 | } 40 | .signinpanel .code { 41 | background: #fff no-repeat 95% center;color:#333; margin:0 0 15px 0; 42 | } 43 | .signinpanel .btn { 44 | margin-top:15px 45 | } 46 | .signinpanel form { 47 | background:rgba(255,255,255,.2); 48 | border:1px solid rgba(255,255,255,.3); 49 | -moz-box-shadow:0 3px 0 rgba(12,12,12,.03); 50 | -webkit-box-shadow:0 3px 0 rgba(12,12,12,.03); 51 | box-shadow:0 3px 0 rgba(12,12,12,.03); 52 | -moz-border-radius:3px; 53 | -webkit-border-radius:3px; 54 | border-radius:3px; 55 | padding:30px 56 | } 57 | .signup-footer { 58 | border-top:solid 1px rgba(255,255,255,.3); 59 | margin:20px 0; 60 | padding-top:15px 61 | } 62 | @media screen and (max-width:768px) { 63 | .signinpanel,.signuppanel { 64 | margin:0 auto; 65 | width:420px!important; 66 | padding:20px 67 | } 68 | .signinpanel form { 69 | margin-top:20px 70 | } 71 | .signup-footer,.signuppanel .form-control { 72 | margin-bottom:10px 73 | } 74 | .signup-footer .pull-left,.signup-footer .pull-right { 75 | float:none!important; 76 | text-align:center 77 | } 78 | .signinpanel .signin-info ul { 79 | display:none 80 | } 81 | }@media screen and (max-width:320px) { 82 | .signinpanel,.signuppanel { 83 | margin:0 20px; 84 | width:auto 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/resources/static/css/login.min.css: -------------------------------------------------------------------------------- 1 | html{height:100%}body.signin{height:auto;background:url(../img/login-background.jpg) no-repeat center fixed;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;color:rgba(255,255,255,.95)}.signinpanel{width:750px;margin:10% auto 0}.signinpanel .logopanel{float:none;width:auto;padding:0;background:0 0}.signinpanel .signin-info ul{list-style:none;padding:0;margin:20px 0}.signinpanel .form-control{display:block;margin-top:15px}.signinpanel .uname{background:#fff url(../img/user.png) no-repeat 95% center;color:#333}.signinpanel .pword{background:#fff url(../img/locked.png) no-repeat 95% center;color:#333}.signinpanel .code{background:#fff no-repeat 95% center;color:#333;margin:0 0 15px 0}.signinpanel .btn{margin-top:15px}.signinpanel form{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);-moz-box-shadow:0 3px 0 rgba(12,12,12,.03);-webkit-box-shadow:0 3px 0 rgba(12,12,12,.03);box-shadow:0 3px 0 rgba(12,12,12,.03);-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding:30px}.signup-footer{border-top:solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top:15px}@media screen and (max-width:768px){.signinpanel,.signuppanel{margin:0 auto;width:420px!important;padding:20px}.signinpanel form{margin-top:20px}.signup-footer,.signuppanel .form-control{margin-bottom:10px}.signup-footer .pull-left,.signup-footer .pull-right{float:none!important;text-align:center}.signinpanel .signin-info ul{display:none}}@media screen and (max-width:320px){.signinpanel,.signuppanel{margin:0 20px;width:auto}} -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/patterns/header-profile-skin-blue.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/patterns/header-profile-skin-yellow.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/patterns/header-profile.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/css/patterns/shattered.png -------------------------------------------------------------------------------- /src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/file/rml.txt: -------------------------------------------------------------------------------- 1 | 下载临时目录 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/Simple-Line-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/Simple-Line-Icons.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/icomoon/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/icomoon/icomoon.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/icomoon/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/icomoon/icomoon.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/icomoon/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/fonts/icomoon/icomoon.woff -------------------------------------------------------------------------------- /src/main/resources/static/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/img/attendlock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/attendlock.jpg -------------------------------------------------------------------------------- /src/main/resources/static/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/bg.png -------------------------------------------------------------------------------- /src/main/resources/static/img/commonuserimg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/commonuserimg.jpg -------------------------------------------------------------------------------- /src/main/resources/static/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/icons.png -------------------------------------------------------------------------------- /src/main/resources/static/img/loading-upload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/loading-upload.gif -------------------------------------------------------------------------------- /src/main/resources/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/img/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/lock.png -------------------------------------------------------------------------------- /src/main/resources/static/img/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/locked.png -------------------------------------------------------------------------------- /src/main/resources/static/img/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/login-background.jpg -------------------------------------------------------------------------------- /src/main/resources/static/img/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/progress.png -------------------------------------------------------------------------------- /src/main/resources/static/img/qr_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/qr_code.png -------------------------------------------------------------------------------- /src/main/resources/static/img/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/sprite-skin-flat.png -------------------------------------------------------------------------------- /src/main/resources/static/img/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/success.png -------------------------------------------------------------------------------- /src/main/resources/static/img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/user.png -------------------------------------------------------------------------------- /src/main/resources/static/img/webuploader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/img/webuploader.png -------------------------------------------------------------------------------- /src/main/resources/static/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/js/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/js/plugins/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yangzhengze/HHao-OA/5ec0138c90975ba2e0e0f98e54c4115d0f2313b0/src/main/resources/static/js/plugins/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/ruoyi/login.js: -------------------------------------------------------------------------------- 1 | 2 | $(function() { 3 | validateRule(); 4 | $(".i-checks").iCheck({checkboxClass:"icheckbox_square-green-login"}); 5 | $('.imgcode').click(function() { 6 | var url = "/code/getVerify?"+ Math.random(); 7 | $(".imgcode").attr("src", url); 8 | }); 9 | }); 10 | 11 | $.validator.setDefaults({ 12 | submitHandler: function() { 13 | login(); 14 | } 15 | }); 16 | 17 | function login() { 18 | $.modal.loginloading($("#btnSubmit").data("loading")); 19 | var username = $("input[name='loginName']").val().trim(); 20 | var password = $("input[name='pwd']").val().trim(); 21 | var validateCode = $("input[name='validateCode']").val(); 22 | var rememberMe = $("input[name='rememberme']").is(':checked'); 23 | $.ajax({ 24 | type: "post", 25 | url: "/oa/login", 26 | data: { 27 | "name": username, 28 | "pwd": password, 29 | "validateCode" : validateCode, 30 | "rememberMe": rememberMe 31 | }, 32 | success: function(r) { 33 | if (r.code == 0) { 34 | location.href ='/oa/index'; 35 | } else { 36 | $.modal.closeLoading(); 37 | $('.imgcode').click(); 38 | $.modal.msg(r.msg); 39 | } 40 | } 41 | }); 42 | } 43 | 44 | //验证 45 | function validateRule() { 46 | var icon = " "; 47 | $("#signupForm").validate({ 48 | rules: { 49 | loginName: { 50 | required: true 51 | }, 52 | password: { 53 | required: true 54 | } 55 | }, 56 | messages: { 57 | loginName: { 58 | required: icon + "请输入您的用户名", 59 | }, 60 | password: { 61 | required: icon + "请输入您的密码", 62 | } 63 | } 64 | }) 65 | } 66 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RuoYi - 404 7 | 8 | 9 | 10 | 11 | 12 |
13 |

404

14 |

找不到网页!

15 |
16 | 对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 17 | 主页 18 |
19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RuoYi - 500 7 | 8 | 9 | 10 | 11 | 12 |
13 |

500

14 |

内部服务器错误!

15 | 16 |
17 | 服务器遇到意外事件,不允许完成请求。我们抱歉。您可以返回主页面。 18 | 主页 19 |
20 |
21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/unauth.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | RuoYi - 403 7 | 8 | 9 | 10 | 11 | 12 |
13 |

403

14 |

您没有访问权限!

15 | 16 |
17 | 对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 18 | 主页 19 |
20 |
21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/actHIActi/actHiActi.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 8 | 13 | 14 |
15 |
    16 |
  • 17 | 18 |
    19 |

    8月18日

    20 |

    21 | 代理人: 22 |

    23 |

    24 | 开启时间: 25 |

    26 | 27 | 28 | 完成时间: 29 | 待 处 理 30 | 31 |

    32 |

    33 |
    34 |
  • 35 |
  • 36 | 37 |
38 |
39 | 42 |
43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/operlog/edit.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 |
10 | 11 |
12 |
13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 | 31 |
32 |
33 |
34 | 35 |
36 | 37 |
38 |
39 |
40 |
41 | 42 |
43 |
44 |
45 |
46 |
47 | 48 |
49 |
50 |
51 |
52 |
53 | 54 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/post/add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 22 | 26 | 27 |
28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 |
36 |
37 | 38 | 39 |
40 |
41 |
42 |
43 |
44 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/post/edit.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 |
9 | 10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 | 18 |
19 | 23 | 27 | 28 |
29 |
30 |
31 | 32 |
33 | 34 |
35 |
36 |
37 |
38 | 39 | 40 |
41 |
42 |
43 |
44 |
45 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/processImg/img.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 |
12 |

查看图片失败

13 |
14 |
15 | 16 |
17 | 18 | -------------------------------------------------------------------------------- /src/main/resources/templates/system/user/resetPwd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 |
9 | 10 |
11 | 12 |
13 |
14 |
15 | 16 |
17 | 18 |
19 |
20 |
21 |
22 | 23 | 24 |
25 |
26 |
27 |
28 |
29 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/html/add.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | #foreach($column in $columns) 9 | #if($column.columnName != $primaryKey.columnName) 10 |
11 | 12 |
13 | 14 |
15 |
16 | #end 17 | #end 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/html/edit.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 | #foreach($column in $columns) 10 | #if($column.columnName != $primaryKey.columnName) 11 |
12 | 13 |
14 | 15 |
16 |
17 | #end 18 | #end 19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 |
27 |
28 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/Mapper.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.mapper; 2 | 3 | import ${package}.domain.${className}; 4 | import java.util.List; 5 | 6 | /** 7 | * ${tableComment} 数据层 8 | * 9 | * @author ${author} 10 | * @date ${datetime} 11 | */ 12 | public interface ${className}Mapper 13 | { 14 | /** 15 | * 查询${tableComment}信息 16 | * 17 | * @param ${primaryKey.attrname} ${tableComment}ID 18 | * @return ${tableComment}信息 19 | */ 20 | public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname}); 21 | 22 | /** 23 | * 查询${tableComment}列表 24 | * 25 | * @param ${classname} ${tableComment}信息 26 | * @return ${tableComment}集合 27 | */ 28 | public List<${className}> select${className}List(${className} ${classname}); 29 | 30 | /** 31 | * 新增${tableComment} 32 | * 33 | * @param ${classname} ${tableComment}信息 34 | * @return 结果 35 | */ 36 | public int insert${className}(${className} ${classname}); 37 | 38 | /** 39 | * 修改${tableComment} 40 | * 41 | * @param ${classname} ${tableComment}信息 42 | * @return 结果 43 | */ 44 | public int update${className}(${className} ${classname}); 45 | 46 | /** 47 | * 批量删除${tableComment} 48 | * 49 | * @param ${primaryKey.attrname}s 需要删除的数据ID 50 | * @return 结果 51 | */ 52 | public int delete${className}ByIds(${primaryKey.attrType}[] ${primaryKey.attrname}s); 53 | 54 | } -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/Service.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.service; 2 | 3 | import ${package}.domain.${className}; 4 | import java.util.List; 5 | 6 | /** 7 | * ${tableComment} 服务层 8 | * 9 | * @author ${author} 10 | * @date ${datetime} 11 | */ 12 | public interface I${className}Service 13 | { 14 | /** 15 | * 查询${tableComment}信息 16 | * 17 | * @param ${primaryKey.attrname} ${tableComment}ID 18 | * @return ${tableComment}信息 19 | */ 20 | public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname}); 21 | 22 | /** 23 | * 查询${tableComment}列表 24 | * 25 | * @param ${classname} ${tableComment}信息 26 | * @return ${tableComment}集合 27 | */ 28 | public List<${className}> select${className}List(${className} ${classname}); 29 | 30 | /** 31 | * 新增${tableComment} 32 | * 33 | * @param ${classname} ${tableComment}信息 34 | * @return 结果 35 | */ 36 | public int insert${className}(${className} ${classname}); 37 | 38 | /** 39 | * 修改${tableComment} 40 | * 41 | * @param ${classname} ${tableComment}信息 42 | * @return 结果 43 | */ 44 | public int update${className}(${className} ${classname}); 45 | 46 | /** 47 | * 保存${tableComment} 48 | * 49 | * @param ${classname} ${tableComment}信息 50 | * @return 结果 51 | */ 52 | public int save${className}(${className} ${classname}); 53 | 54 | 55 | /** 56 | * 删除${tableComment}信息 57 | * 58 | * @param ids 需要删除的数据ID 59 | * @return 结果 60 | */ 61 | public int delete${className}ByIds(String ids); 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/domain.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.domain; 2 | 3 | import com.ruoyi.framework.web.domain.BaseEntity; 4 | #foreach ($column in $columns) 5 | #if($column.attrType == 'Date') 6 | import java.util.Date; 7 | #break 8 | #end 9 | #end 10 | 11 | /** 12 | * ${tableComment}表 ${tableName} 13 | * 14 | * @author ${author} 15 | * @date ${datetime} 16 | */ 17 | public class ${className} extends BaseEntity 18 | { 19 | private static final long serialVersionUID = 1L; 20 | 21 | #foreach ($column in $columns) 22 | /** $column.columnComment */ 23 | private $column.attrType $column.attrname; 24 | #end 25 | 26 | #foreach ($column in $columns) 27 | /** 28 | * 设置:${column.columnComment} 29 | */ 30 | public void set${column.attrName}($column.attrType $column.attrname) 31 | { 32 | this.$column.attrname = $column.attrname; 33 | } 34 | 35 | /** 36 | * 获取:${column.columnComment} 37 | */ 38 | public $column.attrType get${column.attrName}() 39 | { 40 | return $column.attrname; 41 | } 42 | 43 | #end 44 | } 45 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/sql/sql.vm: -------------------------------------------------------------------------------- 1 | -- 菜单 SQL 2 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 3 | values('${tableComment}', '3', '1', '/${moduleName}/${classname}', 'C', '0', '${moduleName}:${classname}:view', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '${tableComment}菜单'); 4 | 5 | -- 按钮父菜单ID 6 | SELECT @parentId := LAST_INSERT_ID(); 7 | 8 | -- 按钮 SQL 9 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 10 | values('${tableComment}查询', @parentId, '1', '#', 'F', '0', '${moduleName}:${classname}:list', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', ''); 11 | 12 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 13 | values('${tableComment}新增', @parentId, '2', '#', 'F', '0', '${moduleName}:${classname}:add', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', ''); 14 | 15 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 16 | values('${tableComment}修改', @parentId, '3', '#', 'F', '0', '${moduleName}:${classname}:edit', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', ''); 17 | 18 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 19 | values('${tableComment}删除', @parentId, '4', '#', 'F', '0', '${moduleName}:${classname}:remove', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', ''); 20 | 21 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 22 | values('${tableComment}保存', @parentId, '5', '#', 'F', '0', '${moduleName}:${classname}:save', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', ''); 23 | -------------------------------------------------------------------------------- /src/test/java/com/yj/oa/OaApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.yj.oa; 2 | 3 | import com.yj.oa.common.utils.DateUtils; 4 | import com.yj.oa.common.utils.json.JsonUtils; 5 | import com.yj.oa.project.mapper.PermissionMapper; 6 | import com.yj.oa.project.mapper.RolePermissionMapper; 7 | import com.yj.oa.project.mapper.UserMapper; 8 | import com.yj.oa.project.po.Attend; 9 | import com.yj.oa.project.po.Permission; 10 | import com.yj.oa.project.po.RolePermission; 11 | import com.yj.oa.project.po.User; 12 | import com.yj.oa.project.po.dto.MenuTree; 13 | import com.yj.oa.project.service.attend.IAttendService; 14 | import com.yj.oa.project.service.attendCount.IAttendCountService; 15 | import com.yj.oa.project.service.menu.IPermissionService; 16 | import org.activiti.engine.ProcessEngineConfiguration; 17 | import org.activiti.engine.TaskService; 18 | import org.junit.Test; 19 | import org.junit.runner.RunWith; 20 | import org.springframework.beans.factory.annotation.Autowired; 21 | import org.springframework.boot.test.context.SpringBootTest; 22 | import org.springframework.test.context.junit4.SpringRunner; 23 | 24 | import java.util.*; 25 | 26 | import static com.yj.oa.common.utils.DateUtils.StrToDate; 27 | 28 | @RunWith(SpringRunner.class) 29 | @SpringBootTest 30 | public class OaApplicationTests{ 31 | 32 | @Autowired 33 | RolePermissionMapper mapper; 34 | 35 | @Autowired 36 | IAttendCountService iAttendService; 37 | 38 | @Autowired 39 | TaskService taskService; 40 | 41 | @Autowired 42 | PermissionMapper permissionMapper; 43 | 44 | @Test 45 | public void contextLoads() 46 | { 47 | 48 | // Date date=DateUtils.StrToDate("2018-10-10 11:12:11"); 49 | // Calendar c = Calendar.getInstance(); 50 | // c.setTime(date); 51 | // System.out.println(c.get(Calendar.HOUR_OF_DAY)); 52 | // System.out.println(c.get(Calendar.MINUTE)); 53 | // System.out.println(c.get(Calendar.SECOND)); 54 | } 55 | } --------------------------------------------------------------------------------