mitao
18 小时以前 291a72bf35e2d39b816abc0ebf085cfa9da3ee06
Merge remote-tracking branch 'origin/master'

# Conflicts:
# ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
20个文件已修改
1个文件已添加
1218 ■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalController.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java 929 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowNodeController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalTodoController.java 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaNotificationController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationsMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalFlowNodeMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalMapper.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalDetailQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalListQuery.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalNodeListQuery.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalTodoListQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationsService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalFlowNodeService.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationsServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalFlowNodeServiceImpl.java 43 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/ApprovalTodoVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationsMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalController.java
@@ -1,28 +1,19 @@
package com.ruoyi.web.controller.api;
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.enums.BusinessType;
import com.ruoyi.system.dto.AddDeptDTO;
import com.ruoyi.system.dto.SetDeptDTO;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.service.TDeptService;
import com.ruoyi.system.vo.system.ApprovalVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowAuditController.java
@@ -108,7 +108,7 @@
 */
@RestController
@RequestMapping("/oa-approval-flow-audit")
@Api(tags = "通用审批接口")
@Api(tags = "我审批的/我发起的/通用审批接口")
public class OaApprovalFlowAuditController {
    @Resource
    private OaApprovalTodoService approvalTodoService;
@@ -171,7 +171,7 @@
    @ApiOperation("我审批的")
    @PostMapping("/pageList")
    @PostMapping("/pageListAudit")
    public R<PageInfo<ApprovalTodoVO>> pageList(@RequestBody ApprovalTodoListQuery query) {
        List<ApprovalTodoVO> resList = new ArrayList<>();
        Long userId = tokenService.getLoginUser().getUserId();
@@ -220,7 +220,6 @@
                .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
        Map<Integer, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
        Map<Integer, OaApprovalTodo> approvalTodoMap = list.stream().collect(Collectors.toMap(OaApprovalTodo::getApplicationId, e -> e));
        Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
        Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
        Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
@@ -252,8 +251,184 @@
            }
            approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
            approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
            OaApprovalTodo oaApprovalTodo = approvalTodoMap.get(approvalApplication.getId());
            approvalTodoVO.setId(oaApprovalTodo.getId());
            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<OaApprovalApplicationAssetItem> 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<PageInfo<ApprovalTodoVO>> pageListApply(@RequestBody ApprovalTodoListQuery query) {
        List<ApprovalTodoVO> resList = new ArrayList<>();
        Long userId = tokenService.getLoginUser().getUserId();
        query.setUserId(userId);
        PageInfo<ApprovalTodoVO> res = new PageInfo<>(query.getPageNum(), query.getPageSize());
        PageInfo<OaApprovalApplications> pageInfo = approvalApplicationsService.pageListAudit(query);
        List<OaApprovalApplications> list = pageInfo.getRecords();
        if (list.isEmpty()){
            return R.ok(new PageInfo<>());
        }
        res.setTotal(pageInfo.getTotal());
        List<Integer> applicationIds = list.stream().map(OaApprovalApplications::getId).collect(Collectors.toList());
        Map<Integer, OaApprovalApplicationReimbursement> approvalApplicationReimbursementMap = approvalApplicationReimbursementService.lambdaQuery()
                .in(OaApprovalApplicationReimbursement::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationReimbursement::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationMoney> oaApprovalApplicationMoneyMap = approvalApplicationMoneyService.lambdaQuery()
                .in(OaApprovalApplicationMoney::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationMoney::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationPayment> approvalApplicationPaymentMap = approvalApplicationPaymentService.lambdaQuery()
                .in(OaApprovalApplicationPayment::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationPayment::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationStorage> applicationStorageMap = approvalApplicationStorageService.lambdaQuery()
                .in(OaApprovalApplicationStorage::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationStorage::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationAsset> approvalApplicationAssetMap = approvalApplicationAssetService.lambdaQuery()
                .in(OaApprovalApplicationAsset::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationAsset::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationDispose> approvalApplicationDisposeMap = approvalApplicationDisposeService.lambdaQuery()
                .in(OaApprovalApplicationDispose::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationDispose::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationChange> approvalApplicationChangeMap = approvalApplicationChangeService.lambdaQuery()
                .in(OaApprovalApplicationChange::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationChange::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationPurchase> approvalApplicationPurchaseMap = approvalApplicationPurchaseService.lambdaQuery()
                .in(OaApprovalApplicationPurchase::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationPurchase::getApprovalApplicationId, e -> e));
        Map<Integer, List<OaApprovalApplicationAssetItem>> approvalApplicationAssetItemMap = approvalApplicationAssetItemService.lambdaQuery()
                .in(OaApprovalApplicationAssetItem::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.groupingBy(OaApprovalApplicationAssetItem::getApprovalApplicationId));
        Map<Integer, OaApprovalApplicationAdvertisement> approvalApplicationAdvertisementMap = approvalApplicationAdvertisementService.lambdaQuery()
                .in(OaApprovalApplicationAdvertisement::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationAdvertisement::getApprovalApplicationId, e -> e));
        Map<Integer, OaApprovalApplicationAttendance> applicationAttendanceMap = approvalApplicationAttendanceService.lambdaQuery()
                .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationIds).list()
                .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
        Map<Integer, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
        Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
        Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
        Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
        List<OaApprovalApplications> 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()){
@@ -353,724 +528,6 @@
    }
    @ApiOperation(value = "合同文件审批详情")
    @GetMapping(value = "/detailContract")
    public R<ContractDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        ContractDetailVO res = new ContractDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PaymentDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        PaymentDetailVO res = new PaymentDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<LeaveDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        LeaveDetailVO res = new LeaveDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<LeaveDestroyDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        LeaveDestroyDetailVO res = new LeaveDestroyDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<OutDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        OutDetailVO res = new OutDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<BusinessTripDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        BusinessTripDetailVO res = new BusinessTripDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<PurchaseListVO>> detailPurchaseList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<PurchaseListVO> items = approvalApplicationPurchaseItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "采购审批详情")
    @GetMapping(value = "/detailPurchase")
    public R<PurchaseDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        PurchaseDetailVO res = new PurchaseDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<GrabListVO>> detailGrabList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品领用审批详情")
    @GetMapping(value = "/detailGrab")
    public R<GrabDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        GrabDetailVO res = new GrabDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<StorageListVO>> detailInStockList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<StorageListVO> items = approvalApplicationStorageService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产入库审批详情")
    @GetMapping(value = "/detailInStock")
    public R<StorageDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        StorageDetailVO res = new StorageDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<GrabListVO>> detailBurrowList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品借用审批详情")
    @GetMapping(value = "/detailBurrow")
    public R<BorrowDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        BorrowDetailVO res = new BorrowDetailVO();
        List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery()
                .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BORROW.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<ApprovalFlowNodeListVO> 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<PageInfo<GrabListVO>> detailBackList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品借用归还审批详情")
    @GetMapping(value = "/detailBack")
    public R<BackDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplicationsBack.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        BackDetailVO res = new BackDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<GrabListVO>> detailDisposeList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产处置审批详情")
    @GetMapping(value = "/detailDispose")
    public R<DisposeDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        DisposeDetailVO res = new DisposeDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<PageInfo<GrabListVO>> detailChangeList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产变更审批详情")
    @GetMapping(value = "/detailChange")
    public R<ChangeDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        ChangeDetailVO res = new ChangeDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<ReimbursementDetailVO> 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<OaApprovalApplicationReimbursementItem> oaApprovalApplicationReimbursementItems = approvalApplicationReimbursementItemService.lambdaQuery()
                .eq(OaApprovalApplicationReimbursementItem::getApprovalApplicationId, approvalApplications.getId())
                .list();
        List<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        ReimbursementDetailVO res = new ReimbursementDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<MoneyDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        MoneyDetailVO res = new MoneyDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<ContactDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        ContactDetailVO res = new ContactDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<AdvertisementDetailVO> 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<OaApprovalFlowAudit> approvalFlowAudits = approvalFlowAuditService.lambdaQuery().eq(OaApprovalFlowAudit::getApprovalApplicationId, approvalApplications.getId())
                .orderByAsc(OaApprovalFlowAudit::getSortOrder)
                .list();
        AdvertisementDetailVO res = new AdvertisementDetailVO();
        List<OaApprovalFlowNode> 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<ApprovalFlowNodeListVO> 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<ApprovalFlowNodeListVO> getFlowNodeList(SysUser sysUser, List<OaApprovalFlowAudit> approvalFlowAudits
            ,List<OaApprovalFlowNode> approvalFlowNodes) {
        List<ApprovalFlowNodeListVO> approvalFlowNodeListVOS = new ArrayList<>();
        Map<Integer, OaApprovalFlowAudit> 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 = "通用审批接口")
@@ -1091,14 +548,14 @@
        approvalTodoService.updateById(approvalTodo);
        OaApproval approval = approvalService.getById(approvalApplications.getApprovalId());
        if (dto.getApprovalStatus()==0){
        if (dto.getApprovalStatus() == 0) {
            // 中断审批流程
            approvalApplications.setApprovalStatus(3);
            approvalApplicationsService.updateById(approvalApplications);
            // 删除除当前审批人该申请单的未处理的所有待办
            approvalTodoService.remove(new LambdaQueryWrapper<OaApprovalTodo>()
                    .eq(OaApprovalTodo::getApplicationId, approvalApplications.getId())
                    .eq(OaApprovalTodo::getStatus,0));
                    .eq(OaApprovalTodo::getStatus, 0));
        }
        OaApprovalFlowNode oaApprovalFlowNode = approvalFlowNodeService.getById(currentFlowNodeId);
        OaApprovalFlowAudit approvalFlowAudit = new OaApprovalFlowAudit();
@@ -1114,19 +571,19 @@
        approvalFlowAuditService.save(approvalFlowAudit);
        List<OaApprovalFlowNode> approvalFlowNodes = approvalFlowNodeService.lambdaQuery().eq(OaApprovalFlowNode::getApprovalId, approval.getId())
                .orderByAsc(OaApprovalFlowNode::getSortOrder).list();
        if (dto.getApprovalStatus()==1){
        if (dto.getApprovalStatus() == 1) {
            // 判断当前是否处于最后一个节点
            if(approvalApplications.getCurrentFlowNodeId().equals(approvalFlowNodes.get(approvalFlowNodes.size()-1).getId())){
            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){
                if (approval.getApprovalCategory() == 10 || approval.getApprovalCategory() == 7
                        || approval.getApprovalCategory() == 8 || approval.getApprovalCategory() == 9) {
                    List<OaApprovalApplicationAssetItem> approvalApplicationAssetItems = approvalApplicationAssetItemService.lambdaQuery()
                            .eq(OaApprovalApplicationAssetItem::getApprovalApplicationId, approvalApplications.getId()).list();
                    List<Integer> AssetMainIds = approvalApplicationAssetItems.stream().map(OaApprovalApplicationAssetItem::getAssetMainId).collect(Collectors.toList());
                    List<AssetMain> assetMains = assetMainService.lambdaQuery().in(AssetMain::getId, AssetMainIds).list();
                    switch (approval.getApprovalCategory()){
                    switch (approval.getApprovalCategory()) {
                        case 10:
                            assetMains.forEach(assetMain -> {
                                assetMain.setDisposed(1);
@@ -1149,22 +606,20 @@
                if (approval.getApprovalCategory().equals(ApprovalTypeEnum.IN_STOCK.getCode())) {
                    assetMainService.saveAssetByApprovalApplicationId(approvalApplications.getId());
                }
            }else{
            } else {
                // 生成下一个节点的待办事项
                for (int i = 0; i < approvalFlowNodes.size(); i++) {
                    if(approvalApplications.getCurrentFlowNodeId()
                            .equals(approvalFlowNodes.get(i).getId())){
                        approvalApplications.setCurrentFlowNodeId(approvalFlowNodes.get(i+1).getId());
                    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();
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalFlowNodeController.java
@@ -3,20 +3,14 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.enums.BusinessType;
import com.ruoyi.system.dto.SetApprovalDTO;
import com.ruoyi.system.dto.SetDeptDTO;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@@ -47,7 +41,7 @@
     */
    @ApiOperation("审批流程设计列表")
    @PostMapping("list")
    public R<List<OaApprovalFlowNode>> list(@RequestBody ApprovalListQuery query) {
    public R<List<OaApprovalFlowNode>> list(@RequestBody ApprovalNodeListQuery query) {
        return R.ok( oaApprovalFlowNodeService.pageList(query));
    }
    @ApiOperation(value = "启用禁用")
@@ -81,7 +75,7 @@
        LambdaUpdateWrapper<OaApprovalFlowNode> oaApprovalFlowNodeLambdaUpdateWrapper = new LambdaUpdateWrapper<>();
        oaApprovalFlowNodeLambdaUpdateWrapper.eq(OaApprovalFlowNode::getId,dto.getId());
        oaApprovalFlowNodeLambdaUpdateWrapper.set(OaApprovalFlowNode::getApprovalType,dto.getApprovalType());
        if (dto.getApprovalType() == 1){
        if (dto.getApprovalType() == 0){
            oaApprovalFlowNodeLambdaUpdateWrapper.set(OaApprovalFlowNode::getApprovalIds,null);
        }else{
            oaApprovalFlowNodeLambdaUpdateWrapper.set(OaApprovalFlowNode::getApprovalIds,dto.getApprovalIds());
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalTodoController.java
@@ -145,7 +145,6 @@
                .stream().collect(Collectors.toMap(OaApprovalApplicationAttendance::getApprovalApplicationId, e -> e));
        Map<Integer, AssetMain> assetMainMap = assetMainService.list().stream().collect(Collectors.toMap(AssetMain::getId, e -> e));
        Map<Integer, OaApprovalTodo> approvalTodoMap = list.stream().collect(Collectors.toMap(OaApprovalTodo::getApplicationId, e -> e));
        Map<Long, SysUser> userMap = sysUserService.selectAllList().stream().collect(Collectors.toMap(SysUser::getUserId, e -> e));
        Map<Integer, TDept> deptMap = deptService.list().stream().collect(Collectors.toMap(TDept::getId, e -> e));
        Map<Integer, OaApproval> approvalMap = approvalService.list().stream().collect(Collectors.toMap(OaApproval::getId, e -> e));
@@ -177,8 +176,6 @@
            }
            approvalTodoVO.setApplicationCode(approvalApplication.getApplicationCode());
            approvalTodoVO.setCreateTime(approvalApplication.getCreateTime());
            OaApprovalTodo oaApprovalTodo = approvalTodoMap.get(approvalApplication.getId());
            approvalTodoVO.setId(oaApprovalTodo.getId());
            approvalTodoVO.setApplicationId(approvalApplication.getId());
            switch (approvalTodoVO.getApprovalCategory()){
@@ -280,9 +277,9 @@
    @ApiOperation(value = "合同文件审批详情")
    @GetMapping(value = "/detailContract")
    public R<ContractDetailVO> detailContract(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<ContractDetailVO> detailContract(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationContract approvalApplicationContract = approvalApplicationContractService.lambdaQuery()
                .eq(OaApprovalApplicationContract::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -312,9 +309,9 @@
    }
    @ApiOperation(value = "进度款支付审批详情")
    @GetMapping(value = "/detailPayment")
    public R<PaymentDetailVO> detailPayment(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<PaymentDetailVO> detailPayment(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationPayment approvalApplicationPayment = approvalApplicationPaymentService.lambdaQuery()
                .eq(OaApprovalApplicationPayment::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -346,9 +343,9 @@
    }
    @ApiOperation(value = "请假申请审批详情")
    @GetMapping(value = "/detailLeave")
    public R<LeaveDetailVO> detailLeave(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<LeaveDetailVO> detailLeave(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -382,9 +379,9 @@
    }
    @ApiOperation(value = "销假审批详情")
    @GetMapping(value = "/detailLeaveDestroy")
    public R<LeaveDestroyDetailVO> detailLeaveDestroy(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<LeaveDestroyDetailVO> detailLeaveDestroy(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -421,9 +418,9 @@
    }
    @ApiOperation(value = "外出申请审批详情")
    @GetMapping(value = "/detailOut")
    public R<OutDetailVO> detailOut(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<OutDetailVO> detailOut(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -455,9 +452,9 @@
    }
    @ApiOperation(value = "出差审批详情")
    @GetMapping(value = "/detailBusinessTrip")
    public R<BusinessTripDetailVO> detailBusinessTrip(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<BusinessTripDetailVO> detailBusinessTrip(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                .eq(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -494,17 +491,16 @@
    @ApiOperation(value = "采购审批详情-采购物品清单")
    @PostMapping(value = "/detailPurchaseList")
    public R<PageInfo<PurchaseListVO>> detailPurchaseList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<PurchaseListVO> items = approvalApplicationPurchaseItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "采购审批详情")
    @GetMapping(value = "/detailPurchase")
    public R<PurchaseDetailVO> detailPurchase(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<PurchaseDetailVO> detailPurchase(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationPurchase approvalApplicationPurchase = approvalApplicationPurchaseService.lambdaQuery()
                .eq(OaApprovalApplicationPurchase::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -541,17 +537,16 @@
    @ApiOperation(value = "物品领用-领用资产列表")
    @PostMapping(value = "/detailGrabList")
    public R<PageInfo<GrabListVO>> detailGrabList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品领用审批详情")
    @GetMapping(value = "/detailGrab")
    public R<GrabDetailVO> detailGrab(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<GrabDetailVO> detailGrab(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAsset approvalApplicationAsset = approvalApplicationAssetService.lambdaQuery()
                .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -589,17 +584,16 @@
    @ApiOperation(value = "资产入库-入库资产列表")
    @PostMapping(value = "/detailInStockList")
    public R<PageInfo<StorageListVO>> detailInStockList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<StorageListVO> items = approvalApplicationStorageService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产入库审批详情")
    @GetMapping(value = "/detailInStock")
    public R<StorageDetailVO> detailInStock(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<StorageDetailVO> detailInStock(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationStorage approvalApplicationStorage = approvalApplicationStorageService.lambdaQuery()
                .eq(OaApprovalApplicationStorage::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -626,17 +620,16 @@
    @ApiOperation(value = "物品借用-借用资产列表")
    @PostMapping(value = "/detailBurrowList")
    public R<PageInfo<GrabListVO>> detailBurrowList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品借用审批详情")
    @GetMapping(value = "/detailBurrow")
    public R<BorrowDetailVO> detailBurrow(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<BorrowDetailVO> detailBurrow(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAsset approvalApplicationAsset = approvalApplicationAssetService.lambdaQuery()
                .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -669,17 +662,16 @@
    @ApiOperation(value = "物品借用归还-归还资产列表")
    @PostMapping(value = "/detailBackList")
    public R<PageInfo<GrabListVO>> detailBackList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "物品借用归还审批详情")
    @GetMapping(value = "/detailBack")
    public R<BackDetailVO> detailBack(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplicationsBack = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<BackDetailVO> detailBack(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplicationsBack = approvalApplicationsService.getById(id);
        OaApprovalApplicationAsset approvalApplicationAssetBack = approvalApplicationAssetService.lambdaQuery()
                .eq(OaApprovalApplicationAsset::getApprovalApplicationId, approvalApplicationsBack.getId())
                .last("limit 1").one();
@@ -714,17 +706,17 @@
    @ApiOperation(value = "资产处置-处置资产列表")
    @PostMapping(value = "/detailDisposeList")
    public R<PageInfo<GrabListVO>> detailDisposeList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产处置审批详情")
    @GetMapping(value = "/detailDispose")
    public R<DisposeDetailVO> detailDispose(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<DisposeDetailVO> detailDispose(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationDispose approvalApplicationDispose = approvalApplicationDisposeService.lambdaQuery()
                .eq(OaApprovalApplicationDispose::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -765,17 +757,16 @@
    @ApiOperation(value = "资产变更-变更资产列表")
    @PostMapping(value = "/detailChangeList")
    public R<PageInfo<GrabListVO>> detailChangeList(@RequestBody ApprovalDetailQuery query) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(query.getId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(query.getId());
        query.setId(approvalApplications.getId());
        PageInfo<GrabListVO> items = approvalApplicationAssetItemService.pageList(query);
        return R.ok(items);
    }
    @ApiOperation(value = "资产变更审批详情")
    @GetMapping(value = "/detailChange")
    public R<ChangeDetailVO> detailChange(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<ChangeDetailVO> detailChange(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationChange approvalApplicationChange = approvalApplicationChangeService.lambdaQuery()
                .eq(OaApprovalApplicationChange::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -817,9 +808,9 @@
    }
    @ApiOperation(value = "报销申请审批详情")
    @GetMapping(value = "/detailReimbursement")
    public R<ReimbursementDetailVO> detailReimbursement(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<ReimbursementDetailVO> detailReimbursement(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationReimbursement approvalApplicationReimbursement = approvalApplicationReimbursementService.lambdaQuery()
                .eq(OaApprovalApplicationReimbursement::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -856,9 +847,9 @@
    }
    @ApiOperation(value = "款项申请审批详情")
    @GetMapping(value = "/detailMoney")
    public R<MoneyDetailVO> detailMoney(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<MoneyDetailVO> detailMoney(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationMoney approvalApplicationMoney = approvalApplicationMoneyService.lambdaQuery()
                .eq(OaApprovalApplicationMoney::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -894,9 +885,9 @@
    }
    @ApiOperation(value = "内部联系单审批详情")
    @GetMapping(value = "/detailContact")
    public R<ContactDetailVO> detailContact(@ApiParam("待办事项id")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
    public R<ContactDetailVO> detailContact(@ApiParam("申请单d")Integer id) {
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationMoney approvalApplicationMoney = approvalApplicationMoneyService.lambdaQuery()
                .eq(OaApprovalApplicationMoney::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
@@ -929,10 +920,10 @@
    }
    @ApiOperation(value = "广告制作审批详情")
    @GetMapping(value = "/detailAdvertisement")
    public R<AdvertisementDetailVO> detailAdvertisement(@ApiParam("待办事项id")Integer id) {
    public R<AdvertisementDetailVO> detailAdvertisement(@ApiParam("申请单d")Integer id) {
        OaApprovalTodo approvalTodo = approvalTodoService.getById(id);
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalTodo.getApplicationId());
        OaApprovalApplications approvalApplications = approvalApplicationsService.getById(id);
        OaApprovalApplicationAdvertisement applicationAdvertisement = approvalApplicationAdvertisementService.lambdaQuery()
                .eq(OaApprovalApplicationAdvertisement::getApprovalApplicationId, approvalApplications.getId())
                .last("limit 1").one();
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaNotificationController.java
@@ -8,23 +8,17 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.system.dto.SetDeptDTO;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.model.OaNotifationUser;
import com.ruoyi.system.model.OaNotification;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.NotificationListQuery;
import com.ruoyi.system.service.*;
import com.ruoyi.system.vo.system.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.sql.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalApplicationsMapper.java
@@ -1,7 +1,12 @@
package com.ruoyi.system.mapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalApplications;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.query.ApprovalTodoListQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -13,4 +18,6 @@
 */
public interface OaApprovalApplicationsMapper extends BaseMapper<OaApprovalApplications> {
    List<OaApprovalApplications> pageListAudit(@Param("query")ApprovalTodoListQuery query, @Param("pageInfo")PageInfo<OaApprovalApplications> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalFlowNodeMapper.java
@@ -1,13 +1,7 @@
package com.ruoyi.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaApprovalMapper.java
@@ -4,6 +4,7 @@
import com.ruoyi.system.model.OaApproval;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.apache.ibatis.annotations.Param;
@@ -19,6 +20,6 @@
 */
public interface OaApprovalMapper extends BaseMapper<OaApproval> {
    List<ApprovalVO> pageList(@Param("query")ApprovalListQuery query, @Param("pageInfo")PageInfo<ApprovalVO> pageInfo);
    List<ApprovalVO> pageList(@Param("query") ApprovalListQuery query, @Param("pageInfo")PageInfo<ApprovalVO> pageInfo);
}
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalDetailQuery.java
@@ -9,7 +9,7 @@
@ApiModel(value = "审批详情通用query")
public class ApprovalDetailQuery extends BasePage {
    @ApiModelProperty(value = "待办id")
    @ApiModelProperty(value = "申请单id")
    private Integer id;
    @ApiModelProperty(value = "申请单id 前端忽略")
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalListQuery.java
@@ -9,6 +9,6 @@
@ApiModel(value = "审批流程分页列表query")
public class ApprovalListQuery extends BasePage {
    @ApiModelProperty(value = "审批设计id")
    private Integer id;
    @ApiModelProperty(value = "审批名称")
    private String approvalName;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalNodeListQuery.java
New file
@@ -0,0 +1,14 @@
package com.ruoyi.system.query;
import com.ruoyi.common.core.domain.BasePage;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "审批流程分页列表query")
public class ApprovalNodeListQuery extends BasePage {
    @ApiModelProperty(value = "审批设计id")
    private Integer id;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/ApprovalTodoListQuery.java
@@ -7,7 +7,7 @@
import lombok.Data;
@Data
@ApiModel(value = "代办事项分页列表query")
@ApiModel(value = "代办事项/我审批的/我发起的分页列表query")
public class ApprovalTodoListQuery extends BasePage {
    @ApiModelProperty("用户id 前端忽略")
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalApplicationsService.java
@@ -1,7 +1,9 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalApplications;
import com.ruoyi.system.query.ApprovalTodoListQuery;
/**
 * <p>
@@ -13,4 +15,5 @@
 */
public interface OaApprovalApplicationsService extends IService<OaApprovalApplications> {
    PageInfo<OaApprovalApplications> pageListAudit(ApprovalTodoListQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalFlowNodeService.java
@@ -1,11 +1,8 @@
package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import java.util.List;
@@ -19,5 +16,5 @@
 */
public interface OaApprovalFlowNodeService extends IService<OaApprovalFlowNode> {
    List<OaApprovalFlowNode> pageList(ApprovalListQuery query);
    List<OaApprovalFlowNode> pageList(ApprovalNodeListQuery query);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/OaApprovalService.java
@@ -4,6 +4,7 @@
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.vo.system.ApprovalVO;
/**
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalApplicationsServiceImpl.java
@@ -1,10 +1,15 @@
package com.ruoyi.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.system.mapper.OaApprovalApplicationsMapper;
import com.ruoyi.system.model.OaApprovalApplications;
import com.ruoyi.system.model.OaApprovalTodo;
import com.ruoyi.system.query.ApprovalTodoListQuery;
import com.ruoyi.system.service.OaApprovalApplicationsService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -17,4 +22,11 @@
@Service
public class OaApprovalApplicationsServiceImpl extends ServiceImpl<OaApprovalApplicationsMapper, OaApprovalApplications> implements OaApprovalApplicationsService {
    @Override
    public PageInfo<OaApprovalApplications> pageListAudit(ApprovalTodoListQuery query) {
        PageInfo<OaApprovalApplications> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<OaApprovalApplications> list = this.baseMapper.pageListAudit(query,pageInfo);
        pageInfo.setRecords( list);
        return pageInfo;
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalFlowNodeServiceImpl.java
@@ -2,18 +2,17 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.system.mapper.OaApprovalFlowNodeMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.TDeptMapper;
import com.ruoyi.system.model.OaApprovalFlowNode;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.service.OaApprovalFlowNodeService;
import com.ruoyi.system.vo.system.ApprovalFlowNodeVO;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
@@ -32,19 +31,43 @@
    @Autowired
    private SysUserMapper sysUserMapper;
    @Autowired
    private TDeptMapper deptMapper;
    @Override
    public List<OaApprovalFlowNode> pageList(ApprovalListQuery query) {
    public List<OaApprovalFlowNode> pageList(ApprovalNodeListQuery query) {
        List<SysUser> sysUsers = sysUserMapper.selectList();
        Map<Long, String> deptMaps = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
        Map<Long, String> userMaps = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName));
        Map<Integer, String> deptMaps = deptMapper.selectList(null).stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName));
        List<OaApprovalFlowNode> oaApprovalFlowNodes = this.baseMapper.selectList(new LambdaQueryWrapper<OaApprovalFlowNode>()
                .eq(OaApprovalFlowNode::getApprovalId, query.getId()));
        for (OaApprovalFlowNode approvalVO : oaApprovalFlowNodes) {
            StringBuilder approvalName = new StringBuilder();
            for (String approvalId : approvalVO.getApprovalIds().split(",")) {
                String orDefault = deptMaps.getOrDefault(Long.valueOf(approvalId), "");
                approvalName.append(orDefault).append(",");
            if (approvalVO.getApprovalType() != 0){
                if (approvalVO.getApprovalType() == 2){
                    for (String approvalId : approvalVO.getApprovalIds().split(",")) {
                        String orDefault = userMaps.getOrDefault(Long.valueOf(approvalId), "");
                        if (StringUtils.hasLength(orDefault)){
                            approvalName.append(orDefault).append(",");
                        }
                    }
                }else{
                    for (String approvalId : approvalVO.getApprovalIds().split(",")) {
                        String orDefault = deptMaps.getOrDefault(Integer.valueOf(approvalId), "");
                        if (StringUtils.hasLength(orDefault)){
                            approvalName.append(orDefault).append(",");
                        }
                    }
                }
                if (StringUtils.hasLength(approvalName)){
                    approvalVO.setApprovalName(approvalName.substring(0,approvalName.length()-1));
                }else{
                    approvalVO.setApprovalName("");
                }
            }else{
                approvalVO.setApprovalName("上级部门");
            }
            approvalVO.setApprovalName(approvalName.substring(0,approvalName.length()-1));
        }
        return oaApprovalFlowNodes;
    }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaApprovalServiceImpl.java
@@ -2,13 +2,12 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.constant.DictConstants;
import com.ruoyi.common.core.domain.entity.TDept;
import com.ruoyi.common.utils.DictUtils;
import com.ruoyi.system.mapper.OaApprovalMapper;
import com.ruoyi.system.mapper.TDeptMapper;
import com.ruoyi.system.model.OaApproval;
import com.ruoyi.system.query.ApprovalListQuery;
import com.ruoyi.system.query.ApprovalNodeListQuery;
import com.ruoyi.system.service.OaApprovalService;
import com.ruoyi.system.vo.system.ApprovalVO;
import org.springframework.beans.factory.annotation.Autowired;
@@ -40,11 +39,15 @@
        List<ApprovalVO> list = this.baseMapper.pageList(query,pageInfo);
        for (ApprovalVO approvalVO : list) {
            StringBuilder deptName = new StringBuilder();
            for (String deptId : approvalVO.getDeptIds().split(",")) {
                String orDefault = deptMaps.getOrDefault(Integer.parseInt(deptId), "");
                deptName.append(orDefault).append(",");
            if(StringUtils.hasLength(approvalVO.getDeptIds())&&approvalVO.getDeptIds().equals("-1")){
                approvalVO.setDeptName("所有部门");
            }else{
                for (String deptId : approvalVO.getDeptIds().split(",")) {
                    String orDefault = deptMaps.getOrDefault(Integer.parseInt(deptId), "");
                    deptName.append(orDefault).append(",");
                }
                approvalVO.setDeptName(deptName.substring(0,deptName.length()-1));
            }
            approvalVO.setDeptName(deptName.substring(0,deptName.length()-1));
        }
        pageInfo.setRecords(list);
        return pageInfo;
ruoyi-system/src/main/java/com/ruoyi/system/vo/ApprovalTodoVO.java
@@ -37,8 +37,7 @@
    private LocalDateTime createTime;
    @ApiModelProperty(value = "代办id")
    private Integer id;
    @ApiModelProperty(value = "审批申请ID")
    private Integer applicationId;
    @ApiModelProperty(value = "报销金额/申请金额/合计金额/总金额(报销申请/款项申请/款项支付审批/广告制作)")
ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationsMapper.xml
@@ -27,5 +27,12 @@
    <sql id="Base_Column_List">
        id, application_code, approval_id, applicant_user_id, applicant_name, dept_id, dept_name, application_date, application_reason, approval_status, attachment_url, current_flow_node_id, create_time, create_by, update_time, update_by, disabled
    </sql>
    <select id="pageListAudit" resultType="com.ruoyi.system.model.OaApprovalApplications">
        select * from oa_approval_applications
        where 1=1
        <if test="query.userId != null ">
            and applicant_user_id like concat('%',#{query.userId},'%')
        </if>
    </select>
</mapper>
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -171,7 +171,7 @@
    <select id="selectList" resultType="com.ruoyi.common.core.domain.entity.SysUser">
        select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
               u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,u.code,
               u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId
               u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack
        from sys_user u
        WHERE u.del_flag = 0
    </select>
@@ -187,7 +187,7 @@
    <select id="selectListByNamePhone" resultType="com.ruoyi.common.core.domain.entity.SysUser">
        select u.user_id AS userId, u.dept_id AS deptId, u.user_name AS userName, u.nick_name AS nickName, u.email AS email, u.avatar AS avatar,
        u.phonenumber AS phonenumber, u.sex AS sex, u.status AS status, u.del_flag AS delFlag, u.login_ip AS loginIp,u.code,
        u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack, u.districtId AS districtId
        u.login_date AS loginDate, u.create_by AS createBy, u.create_time AS createTime, u.remark AS remark,u.ifBlack AS ifBlack
        from sys_user u
        WHERE u.del_flag = 0
        <if test="name != null and name != ''">