package com.ruoyi.web.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.AddLeaveDTO;
import com.ruoyi.system.dto.AuditDTO;
import com.ruoyi.system.emums.ApprovalTypeEnum;
import com.ruoyi.system.model.*;
import com.ruoyi.system.query.ApprovalDetailQuery;
import com.ruoyi.system.query.ApprovalTodoListQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
*
* 审批流程节点审核记录表 前端控制器
*
*
* @author WuGuanFengYue
* @since 2025-09-15
*/
@RestController
@RequestMapping("/oa-approval-flow-audit")
@Api(tags = "我审批的/我发起的/通用审批接口")
public class OaApprovalFlowAuditController {
@Resource
private OaApprovalTodoService approvalTodoService;
@Resource
private OaApprovalFlowAuditService approvalFlowAuditService;
@Resource
private OaApprovalApplicationStorageService approvalApplicationStorageService;
@Resource
private OaApprovalApplicationPurchaseService approvalApplicationPurchaseService;
@Resource
private OaApprovalApplicationPurchaseItemService approvalApplicationPurchaseItemService;
@Resource
private OaApprovalApplicationAssetItemService approvalApplicationAssetItemService;
@Resource
private TokenService tokenService;
@Resource
private OaApprovalService approvalService;
@Resource
private OaApprovalApplicationsService approvalApplicationsService;
@Resource
private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService;
@Resource
private OaApprovalApplicationContactService approvalApplicationContactService;
@Resource
private OaApprovalApplicationPaymentService approvalApplicationPaymentService;
@Resource
private OaApprovalApplicationContractService approvalApplicationContractService;
@Resource
private OaApprovalApplicationMoneyService approvalApplicationMoneyService;
@Resource
private AssetMainService assetMainService;
@Resource
private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService;
@Resource
private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService;
@Resource
private OaApprovalFlowNodeService approvalFlowNodeService;
@Resource
private OaApprovalApplicationAssetService approvalApplicationAssetService;
@Resource
private ISysUserService sysUserService;
@Resource
private OaApprovalApplicationDisposeService approvalApplicationDisposeService;
@Resource
private OaApprovalApplicationChangeService approvalApplicationChangeService;
@Resource
private OaApprovalApplicationAttendanceService approvalApplicationAttendanceService;
@Resource
private TDeptService deptService;
@Resource
private AssetTypeService assetTypeService;
@Resource
private OaApprovalTodoService oaApprovalTodoService;
@Resource
private OaApprovalFlowService approvalFlowService;
@ApiOperation("我审批的")
@PostMapping("/pageListAudit")
public R> pageList(@RequestBody ApprovalTodoListQuery query) {
List resList = new ArrayList<>();
Long userId = tokenService.getLoginUser().getUserId();
query.setUserId(userId);
PageInfo res = new PageInfo<>(query.getPageNum(), query.getPageSize());
PageInfo pageInfo = approvalTodoService.pageListAudit(query);
List list = pageInfo.getRecords();
if (list.isEmpty()){
return R.ok(new PageInfo<>());
}
res.setTotal(pageInfo.getTotal());
List applicationIds = list.stream().map(OaApprovalTodo::getApplicationId).collect(Collectors.toList());
Map approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery()
.in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e));
Map oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery()
.in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e));
Map approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery()
.in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e));
Map applicationStorageMap = approvalApplicationStorageService.lambdaQuery()
.in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e));
Map approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery()
.in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e));
Map approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery()
.in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e));
Map approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery()
.in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e));
Map approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery()
.in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e));
Map> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
.in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
Map approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
.in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
Map applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery()
.in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
Map assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
Map userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
Map deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
Map approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
List approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
for (OaApprovalApplications approvalApplication : approvalApplications) {
ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
switch (approvalTodoVO.getApprovalCategory()){
case 1:
case 2:
case 3:
case 4:
default:
OaApprovalApplicationAttendance oaApprovalApplicationAttendance = applicationAttendanceMap.get(approvalApplication.getId());
if (oaApprovalApplicationAttendance!=null){
approvalTodoVO.setStartTime(oaApprovalApplicationAttendance.getStartTime());
approvalTodoVO.setEndTime(oaApprovalApplicationAttendance.getEndTime());
approvalTodoVO.setDuration(oaApprovalApplicationAttendance.getDuration());
}
break;
}
SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
if (sysUser!=null){
approvalTodoVO.setApplyUserName(sysUser.getUserName());
TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
if (tDept!=null){
approvalTodoVO.setApplyDeptName(tDept.getDeptName());
}
}
approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
approvalTodoVO.setApplicationId(approvalApplication.getId());
switch (approvalTodoVO.getApprovalCategory()){
case 5:
OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
if (oaApprovalApplicationPurchase!=null){
approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
}
break;
case 6:
OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
if (oaApprovalApplicationStorage!=null){
approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
}
break;
case 7:
StringBuilder temp = new StringBuilder();
List oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetItems!=null){
for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
AssetMain assetMain = assetMainMap.get(oaApprovalApplicationAssetItem.getAssetMainId());
if (assetMain!=null){
temp.append(assetMain.getAssetName()).append(",");
}
}
// 去除最后一位字符
if (StringUtils.hasLength(temp.toString())){
approvalTodoVO.setAssetName(temp.substring(0, temp.length() - 1));
}else{
approvalTodoVO.setAssetName("");
}
}
break;
case 8:
OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetOut!=null){
approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
}
break;
case 9:
OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetBack!=null){
approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
}
break;
case 10:
OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
if (oaApprovalApplicationDispose!=null){
approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
}
break;
case 11:
OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
if (oaApprovalApplicationChange!=null){
Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
TDept tDept = deptMap.get(ownershipDeptId);
if (tDept!=null){
approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
}
}
break;
case 12:
OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
if (oaApprovalApplicationReimbursement!=null){
approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
}
break;
case 13:
OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
if (oaApprovalApplicationMoney!=null){
approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
}
break;
case 15:
OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
if (oaApprovalApplicationPayment!=null){
approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
}
break;
case 17:
OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
if (oaApprovalApplicationAdvertisement!=null){
approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
}
break;
}
resList.add(approvalTodoVO);
}
res.setRecords(resList);
return R.ok(res);
}
@ApiOperation("我发起的")
@PostMapping("/pageListApply")
public R> pageListApply(@RequestBody ApprovalTodoListQuery query) {
List resList = new ArrayList<>();
Long userId = tokenService.getLoginUser().getUserId();
query.setUserId(userId);
PageInfo res = new PageInfo<>(query.getPageNum(), query.getPageSize());
PageInfo pageInfo = approvalApplicationsService.pageListAudit(query);
List list = pageInfo.getRecords();
if (list.isEmpty()){
return R.ok(new PageInfo<>());
}
res.setTotal(pageInfo.getTotal());
List applicationIds = list.stream().map(OaApprovalApplications::getId).collect(Collectors.toList());
Map approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery()
.in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e));
Map oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery()
.in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e));
Map approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery()
.in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e));
Map applicationStorageMap = approvalApplicationStorageService.lambdaQuery()
.in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e));
Map approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery()
.in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e));
Map approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery()
.in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e));
Map approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery()
.in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e));
Map approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery()
.in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e));
Map> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
.in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
Map approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
.in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
Map applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery()
.in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list()
.stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
Map assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
Map userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
Map deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
Map approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
List approvalApplications = approvalApplicationsService.lambdaQuery().in(OaApprovalApplications::getId, applicationIds).list();
for (OaApprovalApplications approvalApplication : approvalApplications) {
ApprovalTodoVO approvalTodoVO = new ApprovalTodoVO();
approvalTodoVO.setApprovalCategory(approvalMap.get(approvalApplication.getApprovalId()).getApprovalCategory());
switch (approvalTodoVO.getApprovalCategory()){
case 1:
case 2:
case 3:
case 4:
default:
OaApprovalApplicationAttendance oaApprovalApplicationAttendance = applicationAttendanceMap.get(approvalApplication.getId());
if (oaApprovalApplicationAttendance!=null){
approvalTodoVO.setStartTime(oaApprovalApplicationAttendance.getStartTime());
approvalTodoVO.setEndTime(oaApprovalApplicationAttendance.getEndTime());
approvalTodoVO.setDuration(oaApprovalApplicationAttendance.getDuration());
}
break;
}
SysUser sysUser = userMap.get(approvalApplication.getApplicantUserId().longValue());
if (sysUser!=null){
approvalTodoVO.setApplyUserName(sysUser.getUserName());
TDept tDept = deptMap.get(Integer.parseInt(sysUser.getDeptId()));
if (tDept!=null){
approvalTodoVO.setApplyDeptName(tDept.getDeptName());
}
}
approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
approvalTodoVO.setApplicationId(approvalApplication.getId());
switch (approvalTodoVO.getApprovalCategory()){
case 5:
OaApprovalApplicationPurchase oaApprovalApplicationPurchase = approvalApplicationPurchaseMap.get(approvalApplication.getId());
if (oaApprovalApplicationPurchase!=null){
approvalTodoVO.setAmount(oaApprovalApplicationPurchase.getTotalAmount());
}
break;
case 6:
OaApprovalApplicationStorage oaApprovalApplicationStorage = applicationStorageMap.get(approvalApplication.getId());
if (oaApprovalApplicationStorage!=null){
approvalTodoVO.setStorageType(oaApprovalApplicationStorage.getStorageType());
}
break;
case 7:
StringBuilder temp = new StringBuilder();
List oaApprovalApplicationAssetItems = approvalApplicationAssetItemMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetItems!=null){
for (OaApprovalApplicationAssetItem oaApprovalApplicationAssetItem : oaApprovalApplicationAssetItems) {
AssetMain assetMain = assetMainMap.get(oaApprovalApplicationAssetItem.getAssetMainId());
if (assetMain!=null){
temp.append(assetMain.getAssetName()).append(",");
}
}
// 去除最后一位字符
if (StringUtils.hasLength(temp.toString())){
approvalTodoVO.setAssetName(temp.substring(0, temp.length() - 1));
}else{
approvalTodoVO.setAssetName("");
}
}
break;
case 8:
OaApprovalApplicationAsset oaApprovalApplicationAssetOut = approvalApplicationAssetMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetOut!=null){
approvalTodoVO.setOperateTime(oaApprovalApplicationAssetOut.getOperateTime());
}
break;
case 9:
OaApprovalApplicationAsset oaApprovalApplicationAssetBack = approvalApplicationAssetMap.get(approvalApplication.getId());
if (oaApprovalApplicationAssetBack!=null){
approvalTodoVO.setOperateTime(oaApprovalApplicationAssetBack.getExpectReturnDate());
}
break;
case 10:
OaApprovalApplicationDispose oaApprovalApplicationDispose = approvalApplicationDisposeMap.get(approvalApplication.getId());
if (oaApprovalApplicationDispose!=null){
approvalTodoVO.setDisposeType(oaApprovalApplicationDispose.getDisposeType());
}
break;
case 11:
OaApprovalApplicationChange oaApprovalApplicationChange = approvalApplicationChangeMap.get(approvalApplication.getId());
if (oaApprovalApplicationChange!=null){
Integer ownershipDeptId = oaApprovalApplicationChange.getOwnershipDeptId();
TDept tDept = deptMap.get(ownershipDeptId);
if (tDept!=null){
approvalTodoVO.setOwnershipDeptName(tDept.getDeptName());
}
}
break;
case 12:
OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = approvalApplicationReimbursementMap.get(approvalApplication.getId());
if (oaApprovalApplicationReimbursement!=null){
approvalTodoVO.setAmount(oaApprovalApplicationReimbursement.getReimbursementAmount());
}
break;
case 13:
OaApprovalApplicationMoney oaApprovalApplicationMoney = oaApprovalApplicationMoneyMap.get(approvalApplication.getId());
if (oaApprovalApplicationMoney!=null){
approvalTodoVO.setAmount(oaApprovalApplicationMoney.getApplyAmount());
approvalTodoVO.setDescription(oaApprovalApplicationMoney.getDescription());
}
break;
case 15:
OaApprovalApplicationPayment oaApprovalApplicationPayment = approvalApplicationPaymentMap.get(approvalApplication.getId());
if (oaApprovalApplicationPayment!=null){
approvalTodoVO.setAmount(oaApprovalApplicationPayment.getApplyAmount());
approvalTodoVO.setDescription(approvalApplication.getApplicationReason());
}
break;
case 17:
OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = approvalApplicationAdvertisementMap.get(approvalApplication.getId());
if (oaApprovalApplicationAdvertisement!=null){
approvalTodoVO.setContent(oaApprovalApplicationAdvertisement.getContent());
approvalTodoVO.setAmount(oaApprovalApplicationAdvertisement.getTotalAmount());
}
break;
}
resList.add(approvalTodoVO);
}
res.setRecords(resList);
return R.ok(res);
}
// @ApiOperation(value = "合同文件审批详情")
// @GetMapping(value = "/detailContract")
// public R detailContract(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationContract approvalApplicationContract = approvalApplicationContractService.lambdaQuery()
// .eq(OaApprovalApplicationContract::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// ContractDetailVO res = new ContractDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTRACT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList( sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setContractUrl(approvalApplicationContract.getContractUrl());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// return R.ok(res);
// }
// @ApiOperation(value = "进度款支付审批详情")
// @GetMapping(value = "/detailPayment")
// public R detailPayment(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationPayment approvalApplicationPayment = approvalApplicationPaymentService.lambdaQuery()
// .eq(OaApprovalApplicationPayment::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// PaymentDetailVO res = new PaymentDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.PAYMENT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// // todo 三阶段设计项目表之后完善
// res.setProjectName("本期还未涉及到项目");
// res.setApplyAmount(approvalApplicationPayment.getApplyAmount());
// return R.ok(res);
// }
// @ApiOperation(value = "请假申请审批详情")
// @GetMapping(value = "/detailLeave")
// public R detailLeave(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
// .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// LeaveDetailVO res = new LeaveDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setStartTime(approvalApplicationAttendance.getStartTime());
// res.setEndTime(approvalApplicationAttendance.getEndTime());
// res.setDuration(approvalApplicationAttendance.getDuration());
// return R.ok(res);
// }
// @ApiOperation(value = "销假审批详情")
// @GetMapping(value = "/detailLeaveDestroy")
// public R detailLeaveDestroy(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
// .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// OaApprovalApplicationAttendance leaveApplication = approvalApplicationAttendanceService.getById(approvalApplicationAttendance.getLeaveApprovalApplicationId());
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// LeaveDestroyDetailVO res = new LeaveDestroyDetailVO();
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE_DESTROY.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setStartTime(approvalApplicationAttendance.getStartTime());
// res.setEndTime(approvalApplicationAttendance.getEndTime());
// res.setStartTimeLeave(leaveApplication.getStartTime());
// res.setEndTimeLeave(leaveApplication.getEndTime());
// res.setDurationLeave(leaveApplication.getDuration());
// res.setDuration(approvalApplicationAttendance.getDuration());
// return R.ok(res);
// }
// @ApiOperation(value = "外出申请审批详情")
// @GetMapping(value = "/detailOut")
// public R detailOut(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
// .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// OutDetailVO res = new OutDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.OUT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setStartTime(approvalApplicationAttendance.getStartTime());
// res.setEndTime(approvalApplicationAttendance.getEndTime());
// res.setDuration(approvalApplicationAttendance.getDuration());
// return R.ok(res);
// }
// @ApiOperation(value = "出差审批详情")
// @GetMapping(value = "/detailBusinessTrip")
// public R detailBusinessTrip(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
// .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// BusinessTripDetailVO res = new BusinessTripDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BUSINESS_TRIP.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setStartTime(approvalApplicationAttendance.getStartTime());
// res.setEndTime(approvalApplicationAttendance.getEndTime());
// res.setDuration(approvalApplicationAttendance.getDuration());
// res.setAddress(approvalApplicationAttendance.getAddress());
// res.setProjectName(approvalApplicationAttendance.getProjectName());
// return R.ok(res);
// }
// @ApiOperation(value = "采购审批详情-采购物品清单")
// @PostMapping(value = "/detailPurchaseList")
// public R> detailPurchaseList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationPurchaseItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "采购审批详情")
// @GetMapping(value = "/detailPurchase")
// public R detailPurchase(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationPurchase approvalApplicationPurchase = approvalApplicationPurchaseService.lambdaQuery()
// .eq(OaApprovalApplicationPurchase::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// PurchaseDetailVO res = new PurchaseDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.PURCHASE.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setCreateTime(approvalApplications.getCreateTime());
// res.setTotalAmount(approvalApplicationPurchase.getTotalAmount());
// res.setTitle(approvalApplicationPurchase.getTitle());
// AssetType assetType = assetTypeService.getById(approvalApplicationPurchase.getAssetTypeId());
// if (assetType!=null){
// res.setAssetTypeName(assetType.getTypeName());
// }
// return R.ok(res);
// }
// @ApiOperation(value = "物品领用-领用资产列表")
// @PostMapping(value = "/detailGrabList")
// public R> detailGrabList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationAssetItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "物品领用审批详情")
// @GetMapping(value = "/detailGrab")
// public R detailGrab(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAsset approvalApplicationAsset = approvalApplicationAssetService.lambdaQuery()
// .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// GrabDetailVO res = new GrabDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.GRAB.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setOperateTime(approvalApplicationAsset.getOperateTime());
// res.setTitle(approvalApplicationAsset.getTitle());
// AssetType assetType = assetTypeService.getById(approvalApplicationAsset.getAssetTypeId());
// if (assetType!=null){
// res.setAssetTypeName(assetType.getTypeName());
// }
// return R.ok(res);
// }
// @ApiOperation(value = "资产入库-入库资产列表")
// @PostMapping(value = "/detailInStockList")
// public R> detailInStockList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationStorageService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "资产入库审批详情")
// @GetMapping(value = "/detailInStock")
// public R detailInStock(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationStorage approvalApplicationStorage = approvalApplicationStorageService.lambdaQuery()
// .eq(OaApprovalApplicationStorage::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// StorageDetailVO res = new StorageDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.IN_STOCK.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
//
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setTitle(approvalApplicationStorage.getTitle());
// res.setStorageType(approvalApplicationStorage.getStorageType());
// res.setStorageTime(approvalApplicationStorage.getStorageTime());
// res.setRemarks(approvalApplicationStorage.getTitle());
// return R.ok(res);
// }
// @ApiOperation(value = "物品借用-借用资产列表")
// @PostMapping(value = "/detailBurrowList")
// public R> detailBurrowList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationAssetItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "物品借用审批详情")
// @GetMapping(value = "/detailBurrow")
// public R detailBurrow(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAsset approvalApplicationAsset = approvalApplicationAssetService.lambdaQuery()
// .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// BorrowDetailVO res = new BorrowDetailVO();
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BURROW.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setOperateTime(approvalApplicationAsset.getOperateTime());
// res.setExpectReturnDate(approvalApplicationAsset.getExpectReturnDate());
// return R.ok(res);
// }
// @ApiOperation(value = "物品借用归还-归还资产列表")
// @PostMapping(value = "/detailBackList")
// public R> detailBackList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationAssetItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "物品借用归还审批详情")
// @GetMapping(value = "/detailBack")
// public R detailBack(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplicationsBack = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAsset approvalApplicationAssetBack = approvalApplicationAssetService.lambdaQuery()
// .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplicationsBack.getId())
// .last("limit 1").one();
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalApplicationAssetBack.getBorrowApplicationId());
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplicationsBack.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// BackDetailVO res = new BackDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.RETURN.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplicationsBack.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplicationsBack.getId());
// res.setApplicationReason(approvalApplicationsBack.getApplicationReason());
// res.setAttachmentUrl(approvalApplicationsBack.getAttachmentUrl());
// res.setOperateTime(approvalApplicationAssetBack.getOperateTime());
// res.setExpectReturnDate(approvalApplicationAssetBack.getExpectReturnDate());
// res.setTitle(approvalApplicationAssetBack.getTitle());
// res.setApplicationCode(approvalApplications.getApplicationCode());
// return R.ok(res);
// }
// @ApiOperation(value = "资产处置-处置资产列表")
// @PostMapping(value = "/detailDisposeList")
// public R> detailDisposeList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationAssetItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "资产处置审批详情")
// @GetMapping(value = "/detailDispose")
// public R detailDispose(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationDispose approvalApplicationDispose = approvalApplicationDisposeService.lambdaQuery()
// .eq(OaApprovalApplicationDispose::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// DisposeDetailVO res = new DisposeDetailVO();
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ASSET_DISPOSE.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
//
// res.setDisposeTime(approvalApplicationDispose.getDisposeTime());
// res.setTitle(approvalApplicationDispose.getTitle());
// AssetType assetType = assetTypeService.getById(approvalApplicationDispose.getAssetTypeId());
// if (assetType!=null){
// res.setAssetTypeName(assetType.getTypeName());
// }
// res.setDisposeType(approvalApplicationDispose.getDisposeType());
// res.setDisposeTotalAmount(approvalApplicationDispose.getDisposeTotalAmount());
// return R.ok(res);
// }
//
// @ApiOperation(value = "资产变更-变更资产列表")
// @PostMapping(value = "/detailChangeList")
// public R> detailChangeList(@RequestBody ApprovalDetailQuery query) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// query.setId(approvalApplications.getId());
// PageInfo items = approvalApplicationAssetItemService.pageList(query);
// return R.ok(items);
// }
// @ApiOperation(value = "资产变更审批详情")
// @GetMapping(value = "/detailChange")
// public R detailChange(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationChange approvalApplicationChange = approvalApplicationChangeService.lambdaQuery()
// .eq(OaApprovalApplicationChange::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// ChangeDetailVO res = new ChangeDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ASSET_CHANGE.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// AssetType assetType = assetTypeService.getById(approvalApplicationChange.getAssetTypeId());
// if (assetType!=null){
// res.setAssetTypeName(assetType.getTypeName());
// }
// res.setChangeTime(approvalApplicationChange.getChangeTime());
// res.setTitle(approvalApplicationChange.getTitle());
// TDept dept = deptService.getById(approvalApplicationChange.getOwnershipDeptId());
// if (dept!=null){
// res.setOwnershipDeptName(dept.getDeptName());
// }
// // todo 三阶段完善 仓库名称
// res.setWarehouseName("三阶段完善");
// res.setAddress(approvalApplicationChange.getAddress());
// return R.ok(res);
// }
// @ApiOperation(value = "报销申请审批详情")
// @GetMapping(value = "/detailReimbursement")
// public R detailReimbursement(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationReimbursement approvalApplicationReimbursement = approvalApplicationReimbursementService.lambdaQuery()
// .eq(OaApprovalApplicationReimbursement::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List oaApprovalApplicationReimbursementItems = approvalApplicationReimbursementItemService.lambdaQuery()
// .eq(OaApprovalApplicationReimbursementItem::getApprovalApplicationId, approvalApplications.getId())
// .list();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// ReimbursementDetailVO res = new ReimbursementDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.REIMBURSEMENT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
//
// res.setType(approvalApplicationReimbursement.getType());
// res.setApprovalApplicationReimbursementItems(oaApprovalApplicationReimbursementItems);
// return R.ok(res);
// }
// @ApiOperation(value = "款项申请审批详情")
// @GetMapping(value = "/detailMoney")
// public R detailMoney(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationMoney approvalApplicationMoney = approvalApplicationMoneyService.lambdaQuery()
// .eq(OaApprovalApplicationMoney::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// MoneyDetailVO res = new MoneyDetailVO();
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.MONEY.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setProjectName(approvalApplicationMoney.getProjectName());
// res.setApplyAmount(approvalApplicationMoney.getApplyAmount());
// res.setDescription(approvalApplicationMoney.getDescription());
// res.setPayer(approvalApplicationMoney.getPayer());
// res.setPayee(approvalApplicationMoney.getPayee());
// res.setPayeeContact(approvalApplicationMoney.getPayeeContact());
// res.setPayeeAccount(approvalApplicationMoney.getPayeeAccount());
// return R.ok(res);
// }
// @ApiOperation(value = "内部联系单审批详情")
// @GetMapping(value = "/detailContact")
// public R detailContact(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationMoney approvalApplicationMoney = approvalApplicationMoneyService.lambdaQuery()
// .eq(OaApprovalApplicationMoney::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
//
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// ContactDetailVO res = new ContactDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTACT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setDescription(approvalApplicationMoney.getDescription());
// return R.ok(res);
// }
// @ApiOperation(value = "广告制作审批详情")
// @GetMapping(value = "/detailAdvertisement")
// public R detailAdvertisement(@ApiParam("待办事项id")Integer id) {
// OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
// OaApprovalApplicationAdvertisement applicationAdvertisement = approvalApplicationAdvertisementService.lambdaQuery()
// .eq(OaApprovalApplicationAdvertisement::getApprovalApplicationId, approvalApplications.getId())
// .last("limit 1").one();
//
// List approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
// .orderByAsc(OaApprovalFlowAudit::getSortOrder)
// .list();
// AdvertisementDetailVO res = new AdvertisementDetailVO();
//
//
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
// .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ADVERTISEMENT.getCode())
// .orderByAsc(OaApprovalFlowNode::getSortOrder)
// .eq(OaApprovalFlowNode::getStatus, 1).list();
// SysUser sysUser = sysUserService.selectUserById(approvalApplications.getApplicantUserId().longValue());
// if (sysUser!=null){
// res.setUserName(sysUser.getUserName());
// TDept dept = deptService.getById(sysUser.getDeptId());
// if (dept!=null){
// res.setDeptName(dept.getDeptName());
// }
// }
// List flowNodeList = getFlowNodeList(sysUser, approvalFlowAudits,approvalFlowNodes);
// res.setApprovalFlowNodeListVOS(flowNodeList);
// res.setApprovalApplicationId(approvalApplications.getId());
// res.setApplicationReason(approvalApplications.getApplicationReason());
// res.setAttachmentUrl(approvalApplications.getAttachmentUrl());
// res.setTitle(applicationAdvertisement.getTitle());
// res.setCreateTime(approvalApplications.getCreateTime());
// res.setContent(applicationAdvertisement.getContent());
// res.setNumber(applicationAdvertisement.getNumber());
// res.setTotalAmount(applicationAdvertisement.getTotalAmount());
// res.setSpec(applicationAdvertisement.getSpec());
// return R.ok(res);
// }
// private List getFlowNodeList(SysUser sysUser, List approvalFlowAudits
// ,List approvalFlowNodes) {
// List approvalFlowNodeListVOS = new ArrayList<>();
// Map approvalFlowAuditMap = approvalFlowAudits.stream().collect(Collectors.toMap(OaApprovalFlowAudit::getFlowNodeId, e -> e));
//
// ApprovalFlowNodeListVO approvalFlowNodeListVO = new ApprovalFlowNodeListVO();
// approvalFlowNodeListVO.setFlowName("发起");
// if (sysUser!=null){
// approvalFlowNodeListVO.setUserName(sysUser.getUserName());
// }
// approvalFlowNodeListVOS.add(approvalFlowNodeListVO);
// for (OaApprovalFlowNode approvalFlowNode : approvalFlowNodes) {
// ApprovalFlowNodeListVO approvalFlowNodeVO = new ApprovalFlowNodeListVO();
//
// OaApprovalFlowAudit approvalFlowAudit = approvalFlowAuditMap.get(approvalFlowNode.getId());
// if (approvalFlowAudit!=null){
// approvalFlowNodeVO.setFlowName(approvalFlowAudit.getFlowName());
// approvalFlowNodeVO.setUserName(approvalFlowAudit.getUserName());
// approvalFlowNodeVO.setSignPicUrl(approvalFlowAudit.getSignPicUrl());
// approvalFlowNodeVO.setApprovalStatus(approvalFlowAudit.getApprovalStatus());
// }else{
// approvalFlowNodeVO.setFlowName(approvalFlowNode.getFlowName());
// }
// approvalFlowNodeListVOS.add(approvalFlowNodeVO);
// }
// return approvalFlowNodeListVOS;
// }
//
//
//
// @Log(title = "审批-通用审批接口", businessType = BusinessType.INSERT)
// @ApiOperation(value = "通用审批接口")
// @PostMapping(value = "/audit")
// public R addLeave(@RequestBody AuditDTO dto) {
//
// OaApprovalApplications approvalApplications = approvalApplicationsService.getById(dto.getApprovalApplicationId());
// Integer currentFlowNodeId = approvalApplications.getCurrentFlowNodeId();
// Long userId = tokenService.getLoginUser().getUserId();
// SysUser sysUser = sysUserService.selectUserById(userId);
//
// OaApprovalTodo approvalTodo = approvalTodoService.lambdaQuery().eq(OaApprovalTodo::getUserId, userId)
// .eq(OaApprovalTodo::getFlowNodeId, currentFlowNodeId)
// .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
// .last("limit 1").one();
// approvalTodo.setStatus(1);
// approvalTodo.setHandleTime(LocalDateTime.now());
// approvalTodoService.updateById(approvalTodo);
//
// OaApproval approval = approvalService.getById(approvalApplications.getApprovalId());
// if (dto.getApprovalStatus()==0){
// // 中断审批流程
// approvalApplications.setApprovalStatus(3);
// approvalApplicationsService.updateById(approvalApplications);
// // 删除除当前审批人该申请单的未处理的所有待办
// approvalTodoService.remove(new LambdaQueryWrapper()
// .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
// .eq(OaApprovalTodo::getStatus,0));
// }
// OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(currentFlowNodeId);
// OaApprovalFlowAudit approvalFlowAudit = new OaApprovalFlowAudit();
// approvalFlowAudit.setApprovalApplicationId(approvalApplications.getId());
// approvalFlowAudit.setFlowNodeId(approvalApplications.getCurrentFlowNodeId());
// approvalFlowAudit.setFlowName(oaApprovalFlowNode.getFlowName());
// approvalFlowAudit.setSortOrder(oaApprovalFlowNode.getSortOrder());
// approvalFlowAudit.setUserId(userId.intValue());
// approvalFlowAudit.setUserName(sysUser.getUserName());
// approvalFlowAudit.setApprovalStatus(dto.getApprovalStatus() != 0);
// approvalFlowAudit.setApprovalTime(LocalDateTime.now());
// approvalFlowAudit.setReason(dto.getReason());
// approvalFlowAuditService.save(approvalFlowAudit);
// List approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId())
// .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
// if (dto.getApprovalStatus()==1){
// // 判断当前是否处于最后一个节点
// if(approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(approvalFlowNodes.size()-1).getId())){
// // 审批通过 审批流程结束
// approvalApplications.setApprovalStatus(2);
// approvalApplicationsService.updateById(approvalApplications);
// if (approval.getApprovalCategory()==10||approval.getApprovalCategory()==7
// ||approval.getApprovalCategory()==8||approval.getApprovalCategory()==9){
// List approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery()
// .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list();
// List AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList());
// List assetMains = assetMainService.lambdaQuery().in(AssetMain::getId, AssetMainIds).list();
// switch (approval.getApprovalCategory()){
// case 10:
// assetMains.forEach(assetMain -> {
// assetMain.setDisposed(1);
// });
// break;
// case 7:
// assetMains.forEach(assetMain -> {
// assetMain.setInUse(1);
// });
// break;
// default:
// assetMains.forEach(assetMain -> {
// assetMain.setBorrowed(1);
// });
// break;
// }
// assetMainService.updateBatchById(assetMains);
// }
// }else{
// // 生成下一个节点的待办事项
// for (int i = 0; i < approvalFlowNodes.size(); i++) {
// if(approvalApplications.getCurrentFlowNodeId()
// .equals(approvalFlowNodes.get(i).getId())){
// approvalApplications.setCurrentFlowNodeId(approvalFlowNodes.get(i+1).getId());
// OaApprovalFlowNode oaApprovalFlowNode1 = approvalFlowNodeService.getById(approvalFlowNodes.get(i + 1).getId());
// approvalTodoService.createApprovalTodos(approvalApplications.getId(),
// approvalApplications.getApplicationCode(), oaApprovalFlowNode1, approvalApplications.getDeptId());
// }
// }
// }
//
// }
//
// return R.ok();
// }
}