package com.template.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.template.api.ApplicationProcedureTemporaryControllerAPI; import com.template.model.dto.AppletApprovalProcessDto; import com.template.model.dto.ApplicationProcedureTemporaryDto; import com.template.model.dto.ApprovalProcessDto; import com.template.model.pojo.AdminMenu; import com.template.model.pojo.ApplicationProcedureSetting; import com.template.model.pojo.ApplicationProcedureTemporary; import com.template.model.pojo.PermissionSetting; import com.template.model.result.CommonResult; import com.template.model.result.PageUtils; import com.template.model.vo.ApplicationProcedureTemporaryVo; import com.template.services.AdminMenuService; import com.template.services.ApplicationProcedureSettingService; import com.template.services.ApplicationProcedureTemporaryService; import com.template.services.PermissionSettingService; 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-03-05 */ @RestController public class ApplicationProcedureTemporaryController implements ApplicationProcedureTemporaryControllerAPI { @Autowired ApplicationProcedureTemporaryService applicationProcedureTemporaryService; @Autowired ApplicationProcedureSettingService applicationProcedureSettingService; @Autowired PermissionSettingService permissionSettingService; @Autowired AdminMenuService adminMenuService; @Override public CommonResult save(ApplicationProcedureTemporaryDto applicationProcedureDto) { if (ObjectUtils.isEmpty(applicationProcedureDto)) { return CommonResult.fail(); } Integer usersId = applicationProcedureDto.getUsersId(); // 一个人在一个时间段内只能有一个待审批 LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(ApplicationProcedureTemporary::getStatus,1); applicationProcedureTemporaryService.list(wrapper); ApplicationProcedureTemporary applicationProcedure = new ApplicationProcedureTemporary(); 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 = applicationProcedureTemporaryService.save(applicationProcedure); if (save) { return CommonResult.ok(); } return CommonResult.fail(); } @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)) { if (parentId!=0) { return CommonResult.ok("无审批权限"); }else { pageList=applicationProcedureTemporaryService.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=applicationProcedureTemporaryService.parentPageList(submissionStartTime,submissionEndTime,examineAndApproveStartTime,examineAndApproveEndTime,type,department,key,page,size); return CommonResult.ok(pageList); } pageList=applicationProcedureTemporaryService.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(); ApplicationProcedureTemporary applicationProcedure = applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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("此账号暂无该权限"); } ApplicationProcedureTemporary applicationProcedure = applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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); applicationProcedureTemporaryService.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(); IPage pageList=null; //审批一次,角色等级不为0 if ("1".equals(approverType)) { if (parentId!=0) { return CommonResult.ok("无审批权限"); }else { LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(ObjectUtils.isNotEmpty(status),ApplicationProcedureTemporary::getStatus,status) .between(ObjectUtils.isNotEmpty(startTime)&&ObjectUtils.isNotEmpty(endTime),ApplicationProcedureTemporary::getSubmissionTime,startTime,endTime) .orderByDesc(ApplicationProcedureTemporary::getSubmissionTime); pageList=applicationProcedureTemporaryService.page(new Page<>(page,size),wrapper); return CommonResult.ok(pageList); } } if (parentId==0) { LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); // 全部则是没有待审批的全部 if (ObjectUtils.isEmpty(status)) { ArrayList strings = new ArrayList<>(); strings.add("0"); strings.add("2"); strings.add("3"); wrapper.in(ApplicationProcedureTemporary::getStatus,strings); }else { wrapper.eq(ApplicationProcedureTemporary::getStatus,status); } wrapper.between(ObjectUtils.isNotEmpty(startTime)&&ObjectUtils.isNotEmpty(endTime),ApplicationProcedureTemporary::getSubmissionTime,startTime,endTime) .orderByDesc(ApplicationProcedureTemporary::getSubmissionTime); pageList=applicationProcedureTemporaryService.page(new Page<>(page,size),wrapper); return CommonResult.ok(pageList); } LambdaQueryWrapper wrapper=new LambdaQueryWrapper<>(); wrapper.eq(ObjectUtils.isNotEmpty(status),ApplicationProcedureTemporary::getStatus,status) .between(ObjectUtils.isNotEmpty(startTime)&&ObjectUtils.isNotEmpty(endTime),ApplicationProcedureTemporary::getSubmissionTime,startTime,endTime) .orderByDesc(ApplicationProcedureTemporary::getSubmissionTime); pageList=applicationProcedureTemporaryService.page(new Page<>(page,size),wrapper); return CommonResult.ok(pageList); } }