package com.template.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.template.api.ApplicationProcedureControllerAPI; import com.template.model.dto.AppletApprovalProcessDto; import com.template.model.dto.ApplicationProcedureDto; import com.template.model.dto.ApprovalProcessDto; import com.template.model.pojo.*; import com.template.model.result.CommonResult; import com.template.model.result.PageUtils; import com.template.model.vo.ApplicationProcedureRecordVo; import com.template.model.vo.ApplicationProcedureTemporaryRecordVo; import com.template.model.vo.ApplicationProcedureTemporaryVo; import com.template.model.vo.ApplicationProcedureVo; import com.template.services.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; /** *

* 前端控制器 *

* * @author ceshi * @since 2024-02-27 */ @RestController public class ApplicationProcedureController implements ApplicationProcedureControllerAPI { @Autowired ApplicationProcedureService applicationProcedureService; @Autowired ApplicationProcedureSettingService applicationProcedureSettingService; @Autowired PermissionSettingService permissionSettingService; @Autowired UsersService usersService; @Autowired AdminMenuService adminMenuService; @Autowired ApplicationProcedureTemporaryService applicationProcedureTemporaryService; @Override public CommonResult save(ApplicationProcedureDto applicationProcedureDto) { if (ObjectUtils.isEmpty(applicationProcedureDto)) { return CommonResult.fail(); } ApplicationProcedure applicationProcedure = new ApplicationProcedure(); BeanUtils.copyProperties(applicationProcedureDto, applicationProcedure); // 待审核 applicationProcedure.setStatus("1"); DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 提交时间 applicationProcedure.setSubmissionTime(LocalDateTime.now().format(dateTimeFormatter1)); boolean save = applicationProcedureService.save(applicationProcedure); if (save) { return CommonResult.ok(); } return CommonResult.fail(); } @Override public CommonResult recordList(int usersId) { if (ObjectUtils.isEmpty(usersId)) { return CommonResult.fail("参数异常"); } LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ApplicationProcedure::getUsersId, usersId); List list = applicationProcedureService.list(wrapper); return CommonResult.ok(list); } @Override public CommonResult list( int adminMenuId, String submissionStartTime, String submissionEndTime, String examineAndApproveStartTime, String examineAndApproveEndTime, String type, String department, String key, int page, int size) { PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("非法进入"); } //// 判断该用户是否拥有权限 // // 判断该用户是否拥有权限 // String processManagement = permissionSetting.getProcessManagement(); // if (!"0".equals(processManagement) && !processManagement.contains("5")) { // return CommonResult.fail("此账号暂无该权限"); // } if (ObjectUtils.isEmpty(page) || page <= 0) { page = 1; } if (ObjectUtils.isEmpty(size) || size <= 0) { size = 10; } List list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>()); ApplicationProcedureSetting applicationProcedureSetting = list.get(0); String approverType = applicationProcedureSetting.getApproverType(); Integer adminMenuId1 = permissionSetting.getAdminMenuId(); AdminMenu byId = adminMenuService.getById(adminMenuId1); Integer parentId = byId.getParentId(); PageUtils pageList=null; //审批一次,角色等级不为0 if ("1".equals(approverType)) { pageList=applicationProcedureService.pageList(submissionStartTime,submissionEndTime,examineAndApproveStartTime,examineAndApproveEndTime,type,department,key,page,size); return CommonResult.ok(pageList); } if (parentId==0) { // 全部则是没有待审批的全部 if (ObjectUtils.isEmpty(type)) { type="0,2,3"; } pageList=applicationProcedureService.parentPageList(submissionStartTime,submissionEndTime,examineAndApproveStartTime,examineAndApproveEndTime,type,department,key,page,size); return CommonResult.ok(pageList); } pageList=applicationProcedureService.pageList(submissionStartTime,submissionEndTime,examineAndApproveStartTime,examineAndApproveEndTime,type,department,key,page,size); return CommonResult.ok(pageList); } @Override public CommonResult update(ApprovalProcessDto approvalProcessDto) { int adminMenuId = approvalProcessDto.getAdminMenuId(); PermissionSetting permissionSetting = permissionSettingService.getById(adminMenuId); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("非法进入"); } // 判断该用户是否拥有权限 // 判断该用户是否拥有权限 String processManagement = permissionSetting.getProcessManagement(); if (!"0".equals(processManagement) && !processManagement.contains("3")&& !processManagement.contains("4")) { return CommonResult.fail("此账号暂无该权限"); } int id = approvalProcessDto.getId(); String status = approvalProcessDto.getStatus(); String adminId = approvalProcessDto.getAdminId(); String remark = approvalProcessDto.getRemark(); ApplicationProcedure applicationProcedure = applicationProcedureService.getById(id); if (ObjectUtils.isEmpty(applicationProcedure)) { return CommonResult.fail("参数异常"); } String applicationProcedureStatus = applicationProcedure.getStatus(); if ("0".equals(applicationProcedureStatus)||"3".equals(applicationProcedureStatus)) { return CommonResult.fail("已审批,无需再次审批"); } // 判断是什么审核模式 List list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>()); ApplicationProcedureSetting applicationProcedureSetting = list.get(0); String approverType = applicationProcedureSetting.getApproverType(); // 审核人 Integer adminMenuId1 = permissionSetting.getAdminMenuId(); AdminMenu byId = adminMenuService.getById(adminMenuId1); // 角色等级 Integer parentId = byId.getParentId(); DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 当只需要审核一次 if ("1".equals(approverType)) { if ("1".equals(status)) { status="3"; } applicationProcedure.setStatus(status); applicationProcedure.setApproverId(adminId); // 审批时间 applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } // 当为最高审批人 if (parentId==0) { // 先判断是否已经被审批了 if (!"2".equals(applicationProcedureStatus)) { // 当不是处理中时则无法审批 return CommonResult.fail("当前无法审批"); } if ("1".equals(status)) { status="3"; } applicationProcedure.setStatus(status); applicationProcedure.setApproverId(adminId); // 审批时间 applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } if ("1".equals(status)) { status="2"; } applicationProcedure.setStatus(status); applicationProcedure.setSecondaryApproverId(adminId); // 审批时间 applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setSecondaryExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } @Override public CommonResult appletUpdate(AppletApprovalProcessDto appletApprovalProcessDto) { int id = appletApprovalProcessDto.getId(); String status = appletApprovalProcessDto.getStatus(); String adminMenuId = appletApprovalProcessDto.getAdminMenuId(); String remark = appletApprovalProcessDto.getRemark(); String adminId = appletApprovalProcessDto.getAdminId(); // 判断对应的管理端是否有权限 if (ObjectUtils.isEmpty(adminMenuId)&&ObjectUtils.isEmpty(adminId)) { return CommonResult.fail("无审批权限"); } PermissionSetting permissionSetting = permissionSettingService.getMenuPermissionSetting(adminMenuId); if (ObjectUtils.isEmpty(permissionSetting)) { return CommonResult.fail("无审批权限"); } String processManagement = permissionSetting.getProcessManagement(); if (!"0".equals(processManagement) && !processManagement.contains("3")&& !processManagement.contains("4")) { return CommonResult.fail("此账号暂无该权限"); } ApplicationProcedure applicationProcedure = applicationProcedureService.getById(id); if (ObjectUtils.isEmpty(applicationProcedure)) { return CommonResult.fail("参数异常"); } String applicationProcedureStatus = applicationProcedure.getStatus(); if ("0".equals(applicationProcedureStatus)||"3".equals(applicationProcedureStatus)) { return CommonResult.fail("已审批,无需再次审批"); } // 判断是什么审核模式 List list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>()); ApplicationProcedureSetting applicationProcedureSetting = list.get(0); String approverType = applicationProcedureSetting.getApproverType(); AdminMenu byId = adminMenuService.getById(adminMenuId); // 角色等级 Integer parentId = byId.getParentId(); DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 当只需要审核一次 if ("1".equals(approverType)) { if ("1".equals(status)) { status="3"; } applicationProcedure.setStatus(status); applicationProcedure.setApproverId(adminId); // 审批时间 applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } // 当为最高审批人 if (parentId==0) { // 先判断是否已经被审批了 if (!"2".equals(applicationProcedureStatus)) { // 当不是处理中时则无法审批 return CommonResult.fail("当前无法审批"); } if ("1".equals(status)) { status="3"; } applicationProcedure.setStatus(status); applicationProcedure.setApproverId(adminId); // 审批时间 applicationProcedure.setExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } if ("1".equals(status)) { status="2"; } applicationProcedure.setStatus(status); applicationProcedure.setSecondaryApproverId(adminId); // 审批时间 applicationProcedure.setSecondaryExamineAndApproveTime(LocalDateTime.now().format(dateTimeFormatter1)); // 审批备注 applicationProcedure.setSecondaryExamineAndApproveRemark(remark); applicationProcedureService.updateById(applicationProcedure); return CommonResult.ok(); } @Override public CommonResult appletList(int adminMenuId, String startTime, String endTime, String status, int page, int size) { if (ObjectUtils.isEmpty(page) || page <= 0) { page = 1; } if (ObjectUtils.isEmpty(size) || size <= 0) { size = 10; } List list = applicationProcedureSettingService.list(new LambdaQueryWrapper<>()); ApplicationProcedureSetting applicationProcedureSetting = list.get(0); String approverType = applicationProcedureSetting.getApproverType(); AdminMenu byId = adminMenuService.getById(adminMenuId); Integer parentId = byId.getParentId(); PageUtils pageList=null; //审批一次,角色等级不为0 if ("1".equals(approverType)) { if (parentId!=0) { return CommonResult.ok("无审批权限"); }else { pageList=applicationProcedureService.appletList(startTime,endTime,status,page,size); return CommonResult.ok(pageList); } } if (parentId==0) { // 全部则是没有待审批的全部 if (ObjectUtils.isEmpty(status)) { status="0,2,3"; } pageList=applicationProcedureService.appletParentList(startTime,endTime,status,page,size); return CommonResult.ok(pageList); } return CommonResult.ok(pageList); } @Override public CommonResult statusDropDown() { ArrayList list = new ArrayList<>(); list.add("0"); list.add("1"); list.add("2"); list.add("3"); return CommonResult.ok(list); } @Override public CommonResult appletRecordList( Integer department,Integer userId,String startTime, String endTime, String status, int page, int size) { if (ObjectUtils.isEmpty(page) || page <= 0) { page = 1; } if (ObjectUtils.isEmpty(size) || size <= 0) { size = 10; } //教职工 if (department==4) { PageUtils page1 = applicationProcedureService.appletRecordPage(userId,startTime,endTime,status,page,size); return CommonResult.ok(page1); }else if (department==7){ // 临时人员 PageUtils page1=applicationProcedureTemporaryService.appletRecordPage(userId,startTime,endTime,status,page,size); return CommonResult.ok(page1); } return CommonResult.fail("无访问权限"); } @Override public CommonResult changeDropDown() { LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(Users::getDepartment,4); List list = usersService.list(wrapper); return CommonResult.ok(list); } @Override public CommonResult appletDetail(Integer department, Integer id) { if (department==4) { // ApplicationProcedureVo byId = applicationProcedureService.appletDetail(id); // return CommonResult.ok(byId); // // }else if (department==4){ // 临时人员 ApplicationProcedureTemporaryVo byId = applicationProcedureTemporaryService.appletDetail(id); return CommonResult.ok(byId); } return CommonResult.fail(); } }