PublicAffairs/gather-app/src/main/java/com/ruoyi/business/controller/PoliceLeaveApprovalControll...

230 lines
10 KiB
Java
Raw Normal View History

2025-05-29 19:12:49 +08:00
package com.ruoyi.business.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
2025-06-06 11:53:12 +08:00
import com.ruoyi.common.core.domain.entity.SysDept;
2025-05-29 19:12:49 +08:00
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
2025-06-07 10:19:44 +08:00
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.utils.spring.SpringUtils;
2025-06-07 13:59:48 +08:00
import com.ruoyi.database.domain.ApprovalProcess;
2025-05-29 19:12:49 +08:00
import com.ruoyi.database.domain.PoliceLeaveApproval;
import com.ruoyi.database.domain.dto.ApprovaltDto;
2025-06-06 19:41:48 +08:00
import com.ruoyi.database.domain.gwglLog;
2025-06-07 13:59:48 +08:00
import com.ruoyi.database.service.ApprovalProcessService;
2025-05-29 19:12:49 +08:00
import com.ruoyi.database.service.PoliceLeaveApprovalService;
2025-06-06 19:41:48 +08:00
import com.ruoyi.database.service.gwglLogService;
2025-06-06 11:53:12 +08:00
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
2025-05-29 19:12:49 +08:00
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
2025-06-07 10:19:44 +08:00
import java.text.SimpleDateFormat;
2025-05-29 19:12:49 +08:00
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
2025-06-07 10:19:44 +08:00
import java.util.Date;
2025-05-29 19:12:49 +08:00
import java.util.List;
2025-06-07 16:23:05 +08:00
import java.util.UUID;
2025-06-06 11:53:12 +08:00
import java.util.stream.Collectors;
2025-05-29 19:12:49 +08:00
/**
* @Description PoliceLeaveApprovalController
* @Author lijingtong
* @Date 2025-05-29
*/
@RestController
@RequiredArgsConstructor
2025-06-05 17:19:29 +08:00
@Api(tags = "民警请假审批")
2025-05-29 19:12:49 +08:00
@RequestMapping("/PoliceLeaveApproval")
public class PoliceLeaveApprovalController extends BaseController {
private final PoliceLeaveApprovalService policeLeaveApprovalService;
2025-06-06 11:53:12 +08:00
private final ISysDeptService deptService;
private final ISysUserService userService;
2025-06-06 19:41:48 +08:00
private final gwglLogService gwglLogService;
2025-06-07 13:59:48 +08:00
private final ApprovalProcessService approvalsProcessService;
2025-05-29 19:12:49 +08:00
@RequestMapping("/list")
@ApiOperation("查询")
public TableDataInfo list(PoliceLeaveApproval policeLeaveApproval) {
2025-06-06 11:53:12 +08:00
SysUser user = getLoginUser().getUser();
List<SysDept> sysDepts = deptService.selectAllDeptList();
// 局领导
List<SysUser> users = userService.getList("131000");
// 部门领导
List<String> leader = sysDepts.stream().map(SysDept::getLeader).collect(Collectors.toList());
// 局党委和分管局成员
List<String> leaderLeader = sysDepts.stream().map(SysDept::getLeaderLeader).distinct().collect(Collectors.toList());
2025-05-29 19:12:49 +08:00
startPage();
2025-06-06 11:53:12 +08:00
2025-05-29 19:12:49 +08:00
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String fTime = policeLeaveApproval.getFTime();
String eTime = policeLeaveApproval.getETime();
LocalDateTime time = LocalDateTime.parse(fTime, dtf);
LocalDateTime time1 = LocalDateTime.parse(eTime, dtf);
QueryWrapper<PoliceLeaveApproval> queryWrapper = new QueryWrapper<>(policeLeaveApproval);
queryWrapper.orderByDesc("create_time");
2025-06-06 11:53:12 +08:00
if (fTime != null && fTime != null) {
2025-05-29 19:12:49 +08:00
queryWrapper.between("create_time", time, time1);
}
2025-06-06 11:53:12 +08:00
if (leader.contains(user.getNickName())) {
// 部门领导和政治处侍昌鑫看普通民警
queryWrapper.eq("user_type", 0);
queryWrapper.eq("state", 0);
} else if ("侍昌鑫".equals(user.getNickName())) {
queryWrapper.in("user_type", 0,1);
queryWrapper.eq("state", 0);
} else if ("admin".equals(user.getUserName())) {
// 管理员看所有
}else if ("刘成志".equals(user.getNickName()) || "陈列".equals(user.getNickName())){
// 主要局领导
queryWrapper.eq("state", 3);
} else if (leaderLeader.contains(user.getNickName())) {
// 分管局
queryWrapper.eq("user_type", 1);
}else if (users.contains(user.getNickName()) ) {
// 局领导
queryWrapper.eq("user_type", 1);
}else {
// 自己看自己
queryWrapper.eq("user_id", user.getUserId());
}
2025-05-29 19:12:49 +08:00
List<PoliceLeaveApproval> list = policeLeaveApprovalService.list(new QueryWrapper<>(policeLeaveApproval));
long size = list.size();
2025-06-06 11:53:12 +08:00
return getDataTableEnhance(list, size);
2025-05-29 19:12:49 +08:00
}
2025-06-06 11:53:12 +08:00
2025-05-29 19:12:49 +08:00
@ApiOperation("新增或修改民警请(休)假审批表 传id为修改 不传id为新增")
@PostMapping("/add")
2025-06-06 11:53:12 +08:00
public AjaxResult add(@RequestBody PoliceLeaveApproval policeLeaveApproval) {
List<SysDept> sysDepts = deptService.selectAllDeptList();
// 部门领导
List<String> leader = sysDepts.stream().map(SysDept::getLeader).collect(Collectors.toList());
// 局党委和分管局成员
List<String> leaderLeader = sysDepts.stream().map(SysDept::getLeaderLeader).distinct().collect(Collectors.toList());
2025-06-07 13:59:48 +08:00
String s = OrderNumberGenerator();
2025-05-29 19:12:49 +08:00
SysUser user = getLoginUser().getUser();
if (policeLeaveApproval.getId() == null) {
2025-06-05 17:19:29 +08:00
policeLeaveApproval.setName(user.getNickName());
policeLeaveApproval.setIdCard(user.getIdCard());
policeLeaveApproval.setPhone(user.getPhonenumber());
2025-06-06 11:53:12 +08:00
policeLeaveApproval.setState(0);
2025-06-05 17:19:29 +08:00
policeLeaveApproval.setDeptName(user.getDept().getDeptName());
2025-05-29 19:12:49 +08:00
policeLeaveApproval.setCreateBy(user.getNickName());
2025-06-06 11:53:12 +08:00
policeLeaveApproval.setUserId(user.getUserId());
policeLeaveApproval.setDeptId(user.getDeptId());
2025-06-07 13:59:48 +08:00
policeLeaveApproval.setApplyNo(s);
2025-06-07 16:23:05 +08:00
UUID uuid = UUID.randomUUID();
String uuids = uuid.toString();
policeLeaveApproval.setUuid(uuids);
2025-06-07 13:59:48 +08:00
ApprovalProcess approvalProcess = new ApprovalProcess();
approvalProcess.setApprovalNo(s);
2025-06-08 14:05:42 +08:00
approvalProcess.setProcessTitle("请(休)假审批表");
2025-06-07 13:59:48 +08:00
approvalProcess.setSubmitterName(user.getNickName());
approvalProcess.setSubmitterId(user.getUserId());
approvalProcess.setSubmitTime(new Date().getTime());
2025-06-08 13:14:21 +08:00
approvalProcess.setMatterType(3);
2025-06-07 13:59:48 +08:00
approvalProcess.setApprovalStatus(0);
approvalProcess.setReadStatus(0);
2025-06-09 10:00:49 +08:00
approvalProcess.setLeaveType(policeLeaveApproval.getLeaveType());
2025-06-07 13:59:48 +08:00
approvalProcess.setStartTime(policeLeaveApproval.getStartDate());
approvalProcess.setEndTime(policeLeaveApproval.getEndDate());
approvalProcess.setCreateTime(new Date().getTime());
2025-06-07 16:23:05 +08:00
approvalProcess.setUuid(uuids);
2025-06-07 13:59:48 +08:00
approvalsProcessService.save(approvalProcess);
2025-06-06 11:53:12 +08:00
if (leader.contains(user.getNickName())) {
// 单位领导
policeLeaveApproval.setUserType(1);
} else if (leaderLeader.contains(user.getNickName())) {
// 局党委和分管局成员
policeLeaveApproval.setUserType(2);
} else {
// 普通民警
policeLeaveApproval.setUserType(0);
}
2025-05-29 19:12:49 +08:00
boolean result = policeLeaveApprovalService.save(policeLeaveApproval);
if (!result) {
return AjaxResult.error("新增民警请(休)假审批表失败");
}
return AjaxResult.success(result);
2025-06-06 11:53:12 +08:00
} else {
2025-05-29 19:12:49 +08:00
policeLeaveApproval.setUpdateBy(user.getNickName());
boolean result = policeLeaveApprovalService.updateById(policeLeaveApproval);
if (!result) {
return AjaxResult.error("修改民警请(休)假审批表失败");
}
return AjaxResult.success(result);
}
}
@ApiOperation("删除民警请(休)假审批表")
@DeleteMapping("/{id}")
public AjaxResult delete(@PathVariable Long id) {
boolean result = policeLeaveApprovalService.removeById(id);
if (!result) {
return AjaxResult.error("删除民警请(休)假审批表失败");
}
return AjaxResult.success(result);
}
2025-06-05 17:19:29 +08:00
@ApiOperation("查询流程详情")
2025-05-29 19:12:49 +08:00
@GetMapping("/state/{id}")
public AjaxResult state(@PathVariable Long id) {
PoliceLeaveApproval policeLeaveApproval = policeLeaveApprovalService.getById(id);
if (policeLeaveApproval == null) {
return AjaxResult.error("查询approval流程失败");
}
return AjaxResult.success(policeLeaveApproval);
}
@ApiOperation("审批")
@PostMapping("/approval")
public AjaxResult approval(@RequestBody ApprovaltDto dto) {
Long id = dto.getId();
2025-06-06 19:41:48 +08:00
SysUser user = getLoginUser().getUser();
2025-05-29 19:12:49 +08:00
Integer state = dto.getState();
PoliceLeaveApproval policeLeaveApproval = policeLeaveApprovalService.getById(id);
policeLeaveApproval.setState(state);
boolean result = policeLeaveApprovalService.updateById(policeLeaveApproval);
2025-06-06 19:41:48 +08:00
gwglLog gwglLog = new gwglLog();
gwglLog.setApplyNo(policeLeaveApproval.getApplyNo());
gwglLog.setDeptId(policeLeaveApproval.getDeptId());
gwglLog.setDeptName(policeLeaveApproval.getDeptName());
gwglLog.setUserId(policeLeaveApproval.getUserId());
gwglLog.setUserName(policeLeaveApproval.getName());
gwglLog.setCreateTime(policeLeaveApproval.getCreateTime());
gwglLog.setReason(policeLeaveApproval.getReason());
2025-06-07 10:19:44 +08:00
gwglLog.setResult(state);
gwglLog.setApplyNo(policeLeaveApproval.getApplyNo());
2025-06-06 19:41:48 +08:00
gwglLog.setType(1);
2025-06-09 14:53:28 +08:00
gwglLog.setReason(policeLeaveApproval.getReason());
2025-06-06 19:41:48 +08:00
gwglLog.setChecker(user.getNickName());
2025-06-09 15:50:24 +08:00
gwglLog.setCheckTime(System.currentTimeMillis());
2025-06-06 19:41:48 +08:00
gwglLog.setCheckState(state);
boolean result1 = gwglLogService.save(gwglLog);
if (!result || !result1) {
return AjaxResult.error("审批非工作日饮酒报备单失败");
2025-05-29 19:12:49 +08:00
}
2025-06-06 19:41:48 +08:00
2025-05-29 19:12:49 +08:00
return AjaxResult.success("审批请(休)假成功");
}
2025-06-07 10:19:44 +08:00
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
private static final String DATA_KEY = "DDATAKEY:";
public static String OrderNumberGenerator() {
String format = sdf.format(new Date());
RedisCache bean = SpringUtils.getBean(RedisCache.class);
bean.setCacheObject(DATA_KEY + format, bean.getCacheObject(DATA_KEY + format) == null ? 1 : (Integer) (bean.getCacheObject(DATA_KEY + format)) + 1);
return format + String.format("%04d", (Integer) (bean.getCacheObject(DATA_KEY + format)));
}
2025-05-29 19:12:49 +08:00
}