From 03587b58b343956f910a653c37b9a7bcd84e4af9 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 19 九月 2025 18:54:03 +0800 Subject: [PATCH] 资产管理-资产领用列表 阿里云OSS文件上传 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java | 596 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 596 insertions(+), 0 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java index cc9bf2d..29b8690 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java @@ -1,8 +1,69 @@ package com.ruoyi.web.controller.api; +import com.ruoyi.common.annotation.Log; +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.common.exception.ServiceException; +import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.system.dto.AddAdvertisementDTO; +import com.ruoyi.system.dto.AddBusinessTripDTO; +import com.ruoyi.system.dto.AddContactDTO; +import com.ruoyi.system.dto.AddContractDTO; +import com.ruoyi.system.dto.AddLeaveDTO; +import com.ruoyi.system.dto.AddLeaveDestroyDTO; +import com.ruoyi.system.dto.AddMoneyDTO; +import com.ruoyi.system.dto.AddOutDTO; +import com.ruoyi.system.dto.AddPaymentDTO; +import com.ruoyi.system.dto.AddReimbursementDTO; +import com.ruoyi.system.emums.ApprovalStatusEnum; +import com.ruoyi.system.emums.ApprovalTypeEnum; +import com.ruoyi.system.model.OaApprovalApplicationAdvertisement; +import com.ruoyi.system.model.OaApprovalApplicationAttendance; +import com.ruoyi.system.model.OaApprovalApplicationContact; +import com.ruoyi.system.model.OaApprovalApplicationContract; +import com.ruoyi.system.model.OaApprovalApplicationMoney; +import com.ruoyi.system.model.OaApprovalApplicationPayment; +import com.ruoyi.system.model.OaApprovalApplicationReimbursement; +import com.ruoyi.system.model.OaApprovalApplicationReimbursementItem; +import com.ruoyi.system.model.OaApprovalApplications; +import com.ruoyi.system.model.OaApprovalFlowNode; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.OaApprovalApplicationAdvertisementService; +import com.ruoyi.system.service.OaApprovalApplicationAttendanceService; +import com.ruoyi.system.service.OaApprovalApplicationContactService; +import com.ruoyi.system.service.OaApprovalApplicationContractService; +import com.ruoyi.system.service.OaApprovalApplicationMoneyService; +import com.ruoyi.system.service.OaApprovalApplicationPaymentService; +import com.ruoyi.system.service.OaApprovalApplicationReimbursementItemService; +import com.ruoyi.system.service.OaApprovalApplicationReimbursementService; +import com.ruoyi.system.service.OaApprovalApplicationsService; +import com.ruoyi.system.service.OaApprovalFlowNodeService; +import com.ruoyi.system.service.OaApprovalService; +import com.ruoyi.system.service.OaApprovalTodoService; +import com.ruoyi.system.service.TDeptService; +import com.ruoyi.system.utils.UUIDUtil; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; /** * <p> @@ -13,8 +74,543 @@ * @since 2025-09-15 */ @RestController +@Api(tags ="审批-发起审批") @RequestMapping("/oa-approval-applications") public class OaApprovalApplicationsController { + @Resource + private OaApprovalService approvalService; + @Resource + private TokenService tokenService; + @Resource + private OaApprovalApplicationsService approvalApplicationsService; + @Resource + private OaApprovalApplicationAdvertisementService approvalApplicationAdvertisementService; + @Resource + private OaApprovalApplicationContactService approvalApplicationContactService; + @Resource + private OaApprovalApplicationPaymentService approvalApplicationPaymentService; + @Resource + private OaApprovalApplicationContractService approvalApplicationContractService; + @Resource + private OaApprovalApplicationMoneyService approvalApplicationMoneyService; + @Resource + private OaApprovalApplicationReimbursementService approvalApplicationReimbursementService; + @Resource + private OaApprovalApplicationReimbursementItemService approvalApplicationReimbursementItemService; + @Resource + private OaApprovalFlowNodeService approvalFlowNodeService; + @Resource + private ISysUserService sysUserService; + @Resource + private OaApprovalApplicationAttendanceService approvalApplicationAttendanceService; + @Resource + private TDeptService deptService; + @Resource + private OaApprovalTodoService oaApprovalTodoService; + @Log(title = "审批-发起请假", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起请假") + @PostMapping(value = "/addLeave") + public R addLeave(@RequestBody AddLeaveDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Leave-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.LEAVE.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + List<Integer> approvalIds = approvalApplicationsService.lambdaQuery() + .in(OaApprovalApplications::getApprovalStatus, Arrays.asList(1,2)) + .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.LEAVE.getCode()) + .eq(OaApprovalApplications::getApplicantUserId, sysUser.getUserId()).list() + .stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); + if (!approvalIds.isEmpty()){ + // 根据请假时间 查询请假申请记录 + List<OaApprovalApplicationAttendance> approvalApplicationAttendances = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds) + .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) + .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) + .eq(OaApprovalApplicationAttendance::getIsLeave, 1).list(); + if (!approvalApplicationAttendances.isEmpty()){ + boolean hasOverlap = approvalApplicationAttendanceService.lambdaQuery() + .eq(OaApprovalApplicationAttendance::getIsLeave, true) + .in(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalIds) + .apply("(start_time < {0} AND end_time > {1})", dto.getEndTime(), dto.getStartTime()) + .exists(); + if (hasOverlap) { + return R.fail("请假时间与已有请假记录重叠,请重新选择时间"); + } + } + } + + + approvalApplicationsService.save(oaApprovalApplications); + // 生成明细记录 + OaApprovalApplicationAttendance oaApprovalApplicationAttendance = new OaApprovalApplicationAttendance(); + oaApprovalApplicationAttendance.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationAttendance.setStartTime(dto.getStartTime()); + oaApprovalApplicationAttendance.setEndTime(dto.getEndTime()); + oaApprovalApplicationAttendance.setDuration(dto.getDuration()); + oaApprovalApplicationAttendance.setIsLeave(true); + approvalApplicationAttendanceService.save(oaApprovalApplicationAttendance); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起外出申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起外出申请") + @PostMapping(value = "/addOut") + public R addOut(@RequestBody AddOutDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Out-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.OUT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.OUT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + List<Integer> approvalIds = approvalApplicationsService.lambdaQuery() + .in(OaApprovalApplications::getApprovalStatus, Arrays.asList(1,2)) + .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.OUT.getCode()) + .eq(OaApprovalApplications::getApplicantUserId, sysUser.getUserId()).list() + .stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); + if (!approvalIds.isEmpty()){ + // 根据请假时间 查询请假申请记录 + List<OaApprovalApplicationAttendance> approvalApplicationAttendances = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds) + .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) + .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) + .list(); + if (!approvalApplicationAttendances.isEmpty()){ + boolean hasOverlap = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalIds) + .apply("(start_time < {0} AND end_time > {1})", dto.getEndTime(), dto.getStartTime()) + .exists(); + + if (hasOverlap) { + return R.fail("外出时间与已有外出记录重叠,请重新选择时间"); + } + } + } + + approvalApplicationsService.save(oaApprovalApplications); + // 生成明细记录 + OaApprovalApplicationAttendance oaApprovalApplicationAttendance = new OaApprovalApplicationAttendance(); + oaApprovalApplicationAttendance.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationAttendance.setStartTime(dto.getStartTime()); + oaApprovalApplicationAttendance.setEndTime(dto.getEndTime()); + oaApprovalApplicationAttendance.setDuration(dto.getDuration()); + oaApprovalApplicationAttendance.setAddress(dto.getAddress()); + approvalApplicationAttendanceService.save(oaApprovalApplicationAttendance); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起出差申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起出差申请") + @PostMapping(value = "/addBusinessTrip") + public R addBusinessTrip(@RequestBody AddBusinessTripDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "BusinessTrip-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.BUSINESS_TRIP.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.BUSINESS_TRIP.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + List<Integer> approvalIds = approvalApplicationsService.lambdaQuery() + .in(OaApprovalApplications::getApprovalStatus, Arrays.asList(1,2)) + .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.BUSINESS_TRIP.getCode()) + .eq(OaApprovalApplications::getApplicantUserId, sysUser.getUserId()).list() + .stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); + if (!approvalIds.isEmpty()){ + // 根据请假时间 查询请假申请记录 + List<OaApprovalApplicationAttendance> approvalApplicationAttendances = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds) + .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) + .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) + .list(); + if (!approvalApplicationAttendances.isEmpty()){ + boolean hasOverlap = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId, approvalIds) + .apply("(start_time < {0} AND end_time > {1})", dto.getEndTime(), dto.getStartTime()) + .exists(); + + if (hasOverlap) { + return R.fail("外出时间与已有外出记录重叠,请重新选择时间"); + } + } + } + approvalApplicationsService.save(oaApprovalApplications); + // 生成明细记录 + OaApprovalApplicationAttendance oaApprovalApplicationAttendance = new OaApprovalApplicationAttendance(); + oaApprovalApplicationAttendance.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationAttendance.setStartTime(dto.getStartTime()); + oaApprovalApplicationAttendance.setEndTime(dto.getEndTime()); + oaApprovalApplicationAttendance.setDuration(dto.getDuration()); + oaApprovalApplicationAttendance.setAddress(dto.getAddress()); + oaApprovalApplicationAttendance.setProjectName(dto.getProjectName()); + approvalApplicationAttendanceService.save(oaApprovalApplicationAttendance); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起销假申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起销假申请") + @PostMapping(value = "/addLeaveDestroy") + public R addLeaveDestroy(@RequestBody AddLeaveDestroyDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "LeaveDestroy-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.LEAVE_DESTROY.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.LEAVE_DESTROY.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + // 生成明细记录 + OaApprovalApplicationAttendance oaApprovalApplicationAttendance = new OaApprovalApplicationAttendance(); + oaApprovalApplicationAttendance.setStartTime(dto.getStartTime()); + oaApprovalApplicationAttendance.setEndTime(dto.getEndTime()); + oaApprovalApplicationAttendance.setDuration(dto.getDuration()); + List<Integer> approvalIds = approvalApplicationsService.lambdaQuery() + .eq(OaApprovalApplications::getApprovalStatus, 2) + .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.LEAVE.getCode()) + .eq(OaApprovalApplications::getApplicantUserId, sysUser.getUserId()).list() + .stream().map(OaApprovalApplications::getId).collect(Collectors.toList()); + if (approvalIds.isEmpty()){ + return R.fail("销假失败,销假日期范围内未查询到请假申请"); + } + // 根据请假时间 查询请假申请记录 + OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery() + .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds) + .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime()) + .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime()) + .eq(OaApprovalApplicationAttendance::getIsLeave, 1) + .orderByDesc(OaApprovalApplicationAttendance::getId) + .last("limit 1").one(); + if (approvalApplicationAttendance==null){ + return R.fail("销假失败,销假日期范围内未查询到请假申请"); + } + OaApprovalApplications approvalApplications = approvalApplicationsService.getById(approvalApplicationAttendance.getApprovalApplicationId()); + if (approvalApplications.getApprovalStatus()!=2){ + return R.fail("销假失败,请假申请未通过"); + } + approvalApplicationsService.save(oaApprovalApplications); + oaApprovalApplicationAttendance.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationAttendance.setLeaveApprovalApplicationId(approvalApplicationAttendance.getApprovalApplicationId()); + approvalApplicationAttendanceService.save(oaApprovalApplicationAttendance); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + + @Log(title = "审批-发起报销申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起报销申请") + @PostMapping(value = "/addReimbursement") + public R addReimbursement(@RequestBody AddReimbursementDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Reimbursement-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.REIMBURSEMENT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.REIMBURSEMENT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + OaApprovalApplicationReimbursement oaApprovalApplicationReimbursement = new OaApprovalApplicationReimbursement(); + oaApprovalApplicationReimbursement.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationReimbursement.setType(dto.getType()); + approvalApplicationReimbursementService.save(oaApprovalApplicationReimbursement); + BigDecimal total = new BigDecimal(0); + List<OaApprovalApplicationReimbursementItem> oaApprovalApplicationReimbursementItems = new ArrayList<>(); + for (OaApprovalApplicationReimbursementItem oaApprovalApplicationReimbursementItem : oaApprovalApplicationReimbursementItems) { + oaApprovalApplicationReimbursementItem.setApprovalApplicationId(oaApprovalApplicationReimbursement.getId()); + total = total.add(oaApprovalApplicationReimbursementItem.getAmount()); + } + oaApprovalApplicationReimbursement.setReimbursementAmount(total); + approvalApplicationReimbursementService.updateById(oaApprovalApplicationReimbursement); + approvalApplicationReimbursementItemService.saveBatch(oaApprovalApplicationReimbursementItems); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起款项申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起款项申请") + @PostMapping(value = "/addMoney") + public R addMoney(@RequestBody AddMoneyDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Money-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.MONEY.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.MONEY.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + OaApprovalApplicationMoney oaApprovalApplicationMoney = new OaApprovalApplicationMoney(); + BeanUtils.copyProperties(dto, oaApprovalApplicationMoney); + oaApprovalApplicationMoney.setApprovalApplicationId(oaApprovalApplications.getId()); + approvalApplicationMoneyService.save(oaApprovalApplicationMoney); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起合同文件申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起合同文件申请") + @PostMapping(value = "/addContract") + public R addContract(@RequestBody AddContractDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Contract-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.CONTRACT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTRACT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + + OaApprovalApplicationContract oaApprovalApplicationContract = new OaApprovalApplicationContract(); + oaApprovalApplicationContract.setContractUrl(dto.getContractUrl()); + oaApprovalApplicationContract.setApprovalApplicationId(oaApprovalApplications.getId()); + approvalApplicationContractService.save(oaApprovalApplicationContract); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起进度款支付申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起进度款支付申请") + @PostMapping(value = "/addPayment") + public R addPayment(@RequestBody AddPaymentDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Payment-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.PAYMENT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.PAYMENT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + OaApprovalApplicationPayment oaApprovalApplicationPayment = new OaApprovalApplicationPayment(); + oaApprovalApplicationPayment.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationPayment.setProjectId(dto.getProjectId()); + oaApprovalApplicationPayment.setContractAmount(dto.getContractAmount()); + oaApprovalApplicationPayment.setApplyAmount(dto.getApplyAmount()); + approvalApplicationPaymentService.save(oaApprovalApplicationPayment); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起内部联系单申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起内部联系单申请") + @PostMapping(value = "/addContact") + public R addContact(@RequestBody AddContactDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Contact-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.CONTACT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.CONTACT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + OaApprovalApplicationContact oaApprovalApplicationContact = new OaApprovalApplicationContact(); + oaApprovalApplicationContact.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationContact.setDescription(dto.getDescription()); + approvalApplicationContactService.save(oaApprovalApplicationContact); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + @Log(title = "审批-发起广告制作申请", businessType = BusinessType.INSERT) + @ApiOperation(value = "发起广告制作申请") + @PostMapping(value = "/addAdvertisement") + public R addAdvertisement(@RequestBody AddAdvertisementDTO dto) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String code = "Advertisement-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + OaApprovalApplications oaApprovalApplications = new OaApprovalApplications(); + oaApprovalApplications.setApplicationCode(code); + oaApprovalApplications.setApprovalId(ApprovalTypeEnum.ADVERTISEMENT.getCode()); + oaApprovalApplications.setApplicantUserId(tokenService.getLoginUser().getUserId().intValue()); + SysUser sysUser = sysUserService.selectUserById(tokenService.getLoginUser().getUserId()); + TDept dept = deptService.getById(sysUser.getDeptId()); + oaApprovalApplications.setApplicantName(sysUser.getNickName()); + oaApprovalApplications.setDeptId(Integer.valueOf(sysUser.getDeptId())); + oaApprovalApplications.setDeptName(dept.getDeptName()); + oaApprovalApplications.setApplicationDate(LocalDate.now()); + oaApprovalApplications.setAttachmentUrl(dto.getAttachmentUrl()); + oaApprovalApplications.setApplicationReason(dto.getApplicationReason()); + oaApprovalApplications.setApprovalStatus(1); + OaApprovalFlowNode approvalFlowNode = approvalFlowNodeService.lambdaQuery() + .eq(OaApprovalFlowNode::getApprovalId, ApprovalTypeEnum.ADVERTISEMENT.getCode()) + .orderByAsc(OaApprovalFlowNode::getSortOrder) + .eq(OaApprovalFlowNode::getStatus,1) + .last("limit 1") + .one(); + oaApprovalApplications.setCurrentFlowNodeId(approvalFlowNode.getId()); + approvalApplicationsService.save(oaApprovalApplications); + OaApprovalApplicationAdvertisement oaApprovalApplicationAdvertisement = new OaApprovalApplicationAdvertisement(); + oaApprovalApplicationAdvertisement.setApprovalApplicationId(oaApprovalApplications.getId()); + oaApprovalApplicationAdvertisement.setTitle(dto.getTitle()); + oaApprovalApplicationAdvertisement.setContent(dto.getContent()); + oaApprovalApplicationAdvertisement.setNumber(dto.getNumber()); + oaApprovalApplicationAdvertisement.setTotalAmount(dto.getTotalAmount()); + oaApprovalApplicationAdvertisement.setSpec(dto.getSpec()); + oaApprovalApplicationAdvertisement.setStatus(false); + approvalApplicationAdvertisementService.save(oaApprovalApplicationAdvertisement); + // 根据节点类型 生成代办 + oaApprovalTodoService.createApprovalTodos(oaApprovalApplications.getId(), code, approvalFlowNode, + Integer.valueOf(sysUser.getDeptId())); + return R.ok(); + } + + @Log(title = "审批-撤回通用审批单", businessType = BusinessType.UPDATE) + @ApiOperation(value = "撤回审批单(通用接口)") + @PutMapping(value = "/withdraw/{id}") + public R<?> withdraw(@PathVariable Integer id) { + OaApprovalApplications current = approvalApplicationsService.getById(id); + if (current == null) { + throw new ServiceException("审批单不存在"); + } + if (!ApprovalStatusEnum.PENDING.getCode().equals(current.getApprovalStatus())) { + throw new ServiceException("仅待审批状态可撤回"); + } + OaApprovalApplications update = new OaApprovalApplications(); + update.setId(id); + update.setApprovalStatus(ApprovalStatusEnum.CANCELED.getCode()); + approvalApplicationsService.updateById(update); + return R.ok(); + } } -- Gitblit v1.7.1