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

323 lines
16 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.database.domain.*;
import com.ruoyi.database.service.*;
import com.ruoyi.system.service.ISysUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
/**
* @Description ApprovalProcessController
* @Author lijingtong
* @Date 2025-06-07
*/
@Api(tags = "审批单")
@RestController
@RequestMapping("/ApprovalProcess")
@RequiredArgsConstructor
public class ApprovalProcessController extends BaseController {
private final ApprovalProcessService approvalsProcessService;
private final BusinessTripApprovalService businessTripApprovalService;
private final NonWorkingDayDrinkingReportService nonWorkingDayDrinkingReportService;
private final PoliceLeaveApprovalService policeLeaveApprovalService;
private final ISysUserService sysUserService;
private final gwglLogService gwglLogService;
@PostMapping("/list")
@ApiOperation("查询列表")
public TableDataInfo list(@RequestBody ApprovalProcess approvalProcess) {
// startPage();
QueryWrapper<ApprovalProcess> queryWrapper = new QueryWrapper<>(approvalProcess);
queryWrapper.orderByDesc("create_time");
if (approvalProcess.getTimeType() != null) {
if (approvalProcess.getTimeType() == 1) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 3 * 24 * 60 * 60 * 1000L);
} else if (approvalProcess.getTimeType() == 2) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000L);
} else if (approvalProcess.getTimeType() == 3) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 30 * 24 * 60 * 60 * 1000L);
}
}
if (approvalProcess.getProcessTitle() != null) {
queryWrapper.like("process_title", approvalProcess.getProcessTitle())
.or().like("submitter_name", approvalProcess.getProcessTitle());
}
if (approvalProcess.getSubmitterId() != null) {
queryWrapper.eq("submitter_id", getLoginUser().getUserId());
}
List<ApprovalProcess> list = approvalsProcessService.list(queryWrapper);
List<ApprovalProcess> newList = new ArrayList<>();
for (ApprovalProcess process : list) {
if (process.getMatterType() == 2) {
gwglLog one = gwglLogService.lambdaQuery()
.eq(gwglLog::getUuid, process.getUuid())
.orderByDesc(gwglLog::getCreateTime)
.last("LIMIT 1")
.one();
if (one != null) {
if ((one.getCheckUserId() != null && one.getCheckUserId().equals(getUserId().toString()))
|| (one.getChecker() != null && one.getChecker().equals(getNickname()))) {
if (one.getCheckState() == 0) {
process.setApprovalStatus(0);
} else {
process.setApprovalStatus(1);
}
}
}else {
continue;
}
}
if (process.getMatterType() == 3) {
gwglLog one = gwglLogService.lambdaQuery()
.eq(gwglLog::getApplyNo, process.getApprovalNo())
.orderByDesc(gwglLog::getCreateTime)
.last("LIMIT 1")
.one();
if (one != null) {
if ((one.getCheckUserId() != null && one.getCheckUserId().equals(getUserId().toString()))
|| (one.getChecker() != null && one.getChecker().equals(getNickname()))) {
if (one.getCheckState() == 0) {
process.setApprovalStatus(0);
} else {
process.setApprovalStatus(1);
}
}
}else {
continue;
}
}
if (process.getMatterType() == 4) {
gwglLog one = gwglLogService.lambdaQuery()
.eq(gwglLog::getApplyNo, process.getApprovalNo())
.orderByDesc(gwglLog::getCreateTime)
.last("LIMIT 1")
.one();
if (one != null) {
if ((one.getCheckUserId() != null && one.getCheckUserId().equals(getUserId().toString()))
|| (one.getChecker() != null && one.getChecker().equals(getNickname()))) {
if (one.getCheckState() == 0) {
process.setApprovalStatus(0);
} else {
process.setApprovalStatus(1);
}
}
}else {
continue;
}
}
// 如果创建时间为当天的时间
if (process.getCreateTime() > System.currentTimeMillis() - 24 * 60 * 60 * 1000) {
// 一分钟之内,显示刚刚
// 模拟获取创建时间戳(这里以当前时间戳减去一定值为例,实际应替换为 process.getCreateTime()
long createTime = process.getCreateTime();
long currentTime = System.currentTimeMillis();
String result;
if (createTime > currentTime - 60 * 1000) {
result = "刚刚";
process.setShowTime(result);
} else if (createTime <= currentTime - 60 * 1000 && createTime > currentTime - 30 * 60 * 1000) {
long minutes = (currentTime - createTime) / (60 * 1000);
result = minutes + "分钟前";
process.setShowTime(result);
} else if (createTime <= currentTime - 30 * 60 * 1000 && createTime > currentTime - 60 * 60 * 1000) {
result = "半小时前";
process.setShowTime(result);
} else if (createTime <= currentTime - 60 * 60 * 1000) {
long hours = (currentTime - createTime) / (60 * 60 * 1000);
result = hours + "小时前";
process.setShowTime(result);
} else {
result = "时间计算异常";
process.setShowTime(result);
}
/*Long createTime = process.getCreateTime();
Instant instant = Instant.ofEpochMilli(createTime);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String formattedTime = localDateTime.format(formatter);
process.setShowTime(formattedTime);*/
} else if (process.getCreateTime() > System.currentTimeMillis() - 24 * 60 * 60 * 1000 && process.getCreateTime() < System.currentTimeMillis() - 2 * 24 * 60 * 60 * 1000) {
// 超过一天不大于两天,显示“昨天”
process.setShowTime("昨天");
} else {
// 超过两天显示年月日时分秒
Long createTime = process.getCreateTime();
Instant instant = Instant.ofEpochMilli(createTime);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd");
String formattedTime = localDateTime.format(formatter);
process.setShowTime(formattedTime);
}
newList.add(process);
}
return getDataTable(newList);
}
public static void main(String[] args) {
Long createTime = 1749279303395L;
Instant instant = Instant.ofEpochMilli(createTime);
// 2. 转换为本地时区(如北京时间 UTC+8
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
// 3. 定义日期时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
// 4. 格式化为字符串
String formattedTime = localDateTime.format(formatter);
System.out.println(formattedTime);
}
@ApiOperation("根据编号查")
@PostMapping("/getByApprovalNo/{id}")
public TableDataInfo getByApprovalNo(@PathVariable String id) {
List<ApprovalProcess> list = approvalsProcessService.lambdaQuery()
.like(ApprovalProcess::getApprovalNo, id)
.orderByDesc(ApprovalProcess::getCreateTime)
.list();
return getDataTable(list);
}
@ApiOperation("根据用户id查")
@PostMapping("/getByuserId")
public TableDataInfo getByuserId(@RequestBody ApprovalProcess approvalProcess) {
QueryWrapper<ApprovalProcess> queryWrapper = new QueryWrapper<>(approvalProcess);
queryWrapper.orderByDesc("create_time");
if (approvalProcess.getTimeType() != null) {
if (approvalProcess.getTimeType() == 1) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 3 * 24 * 60 * 60 * 1000L);
} else if (approvalProcess.getTimeType() == 2) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 7 * 24 * 60 * 60 * 1000L);
} else if (approvalProcess.getTimeType() == 3) {
queryWrapper.ge("create_time", System.currentTimeMillis() - 30 * 24 * 60 * 60 * 1000L);
}
}
if (approvalProcess.getProcessTitle() != null) {
queryWrapper.like("process_title", approvalProcess.getProcessTitle())
.or().like("submitter_name", approvalProcess.getProcessTitle());
}
queryWrapper.eq("submitter_id", getLoginUser().getUserId());
List<ApprovalProcess> list = approvalsProcessService.list(queryWrapper);
for (ApprovalProcess process : list) {
// 如果创建时间为当天的时间
if (process.getCreateTime() > System.currentTimeMillis() - 24 * 60 * 60 * 1000) {
// 一分钟之内,显示刚刚
// 模拟获取创建时间戳(这里以当前时间戳减去一定值为例,实际应替换为 process.getCreateTime()
long createTime = process.getCreateTime();
long currentTime = System.currentTimeMillis();
String result;
if (createTime > currentTime - 60 * 1000) {
result = "刚刚";
process.setShowTime(result);
} else if (createTime <= currentTime - 60 * 1000 && createTime > currentTime - 30 * 60 * 1000) {
long minutes = (currentTime - createTime) / (60 * 1000);
result = minutes + "分钟前";
process.setShowTime(result);
} else if (createTime <= currentTime - 30 * 60 * 1000 && createTime > currentTime - 60 * 60 * 1000) {
result = "半小时前";
process.setShowTime(result);
} else if (createTime <= currentTime - 60 * 60 * 1000) {
long hours = (currentTime - createTime) / (60 * 60 * 1000);
result = hours + "小时前";
process.setShowTime(result);
} else {
result = "时间计算异常";
process.setShowTime(result);
}
/*Long createTime = process.getCreateTime();
Instant instant = Instant.ofEpochMilli(createTime);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
String formattedTime = localDateTime.format(formatter);
process.setShowTime(formattedTime);*/
} else if (process.getCreateTime() > System.currentTimeMillis() - 24 * 60 * 60 * 1000 && process.getCreateTime() < System.currentTimeMillis() - 2 * 24 * 60 * 60 * 1000) {
// 超过一天不大于两天,显示“昨天”
process.setShowTime("昨天");
} else {
// 超过两天显示年月日时分秒
Long createTime = process.getCreateTime();
Instant instant = Instant.ofEpochMilli(createTime);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd");
String formattedTime = localDateTime.format(formatter);
process.setShowTime(formattedTime);
}
}
return getDataTable(list);
}
@ApiOperation("根据id查")
@PostMapping("/getById/{id}")
public AjaxResult getById(@PathVariable Long id) {
ApprovalProcess byId = approvalsProcessService.getById(id);
Integer matterType = byId.getMatterType();
if (matterType == 2) {
BusinessTripApproval one = businessTripApprovalService.lambdaQuery()
.eq(BusinessTripApproval::getUuid, byId.getUuid())
.last("LIMIT 1")
.one();
one.setDestinationIdCn(byId.getBusinessTripDestination());
String togUserIds = one.getTogUserIds();
if (togUserIds != null && !"".equals(togUserIds)) {
List<SysUser> userList = new ArrayList<>();
if (togUserIds.contains(",")) {
String[] split = togUserIds.split(",");
for (String s : split) {
s = s.trim();
System.out.println("拆分的字:" + s);// 移除首尾空格
if (!s.isEmpty()) {
SysUser user = sysUserService.selectUserById(Long.parseLong(s));
userList.add(user);
}
}
one.setTogUserList(userList);
} else {
SysUser user = sysUserService.selectUserById(Long.parseLong(togUserIds));
userList.add(user);
one.setTogUserList(userList);
}
}
return AjaxResult.success(one);
}
if (matterType == 3) {
PoliceLeaveApproval one = policeLeaveApprovalService.lambdaQuery()
.eq(PoliceLeaveApproval::getUuid, byId.getUuid())
.last("LIMIT 1")
.one();
return AjaxResult.success(one);
}
if (matterType == 4) {
NonWorkingDayDrinkingReport one = nonWorkingDayDrinkingReportService.lambdaQuery()
.eq(NonWorkingDayDrinkingReport::getUuid, byId.getUuid())
.last("LIMIT 1")
.one();
return AjaxResult.success(one);
}
return AjaxResult.success(null);
}
}