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 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.getProcessTitles() != null) { queryWrapper.like("process_title", approvalProcess.getProcessTitles()) .or().like("submitter_name", approvalProcess.getProcessTitles()); } if (approvalProcess.getSubmitterId() != null) { queryWrapper.eq("submitter_id", getLoginUser().getUserId()); } List list = approvalsProcessService.list(queryWrapper); List 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; } }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; } }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; } }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 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 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.getProcessTitles() != null) { queryWrapper.like("process_title", approvalProcess.getProcessTitles()) .or().like("submitter_name", approvalProcess.getProcessTitles()); } queryWrapper.eq("submitter_id", getLoginUser().getUserId()); List 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 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); } }