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();
}
}