无关风月
2 天以前 836539b11e4871784db19058110b28b90c7c006e
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaApprovalApplicationsController.java
@@ -6,13 +6,31 @@
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.*;
import com.ruoyi.system.emums.ApprovalFlowNodeEnum;
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.*;
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;
@@ -30,13 +48,8 @@
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.PutMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import oshi.driver.mac.net.NetStat;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -47,8 +60,6 @@
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import com.ruoyi.system.emums.ApprovalStatusEnum;
import com.ruoyi.common.exception.ServiceException;
/**
 * <p>
@@ -93,6 +104,7 @@
    @Resource
    private OaApprovalTodoService oaApprovalTodoService;
    @Log(title = "审批-发起请假", businessType = BusinessType.INSERT)
    @Transactional
    @ApiOperation(value = "发起请假")
    @PostMapping(value = "/addLeave")
    public R addLeave(@RequestBody AddLeaveDTO dto) {
@@ -161,6 +173,7 @@
    @Log(title = "审批-发起外出申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起外出申请")
    @PostMapping(value = "/addOut")
    @Transactional
    public R addOut(@RequestBody AddOutDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String code = "Out-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
@@ -225,6 +238,7 @@
    }
    @Log(title = "审批-发起出差申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起出差申请")
    @Transactional
    @PostMapping(value = "/addBusinessTrip")
    public R addBusinessTrip(@RequestBody AddBusinessTripDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -289,6 +303,7 @@
    }
    @Log(title = "审批-发起销假申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起销假申请")
    @Transactional
    @PostMapping(value = "/addLeaveDestroy")
    public R addLeaveDestroy(@RequestBody AddLeaveDestroyDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -329,8 +344,8 @@
        // 根据请假时间 查询请假申请记录
        OaApprovalApplicationAttendance approvalApplicationAttendance = approvalApplicationAttendanceService.lambdaQuery()
                .in(OaApprovalApplicationAttendance::getApprovalApplicationId,approvalIds)
                .ge(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime())
                .le(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime())
                .le(OaApprovalApplicationAttendance::getStartTime, dto.getStartTime())
                .ge(OaApprovalApplicationAttendance::getEndTime, dto.getEndTime())
                .eq(OaApprovalApplicationAttendance::getIsLeave, 1)
                .orderByDesc(OaApprovalApplicationAttendance::getId)
                .last("limit 1").one();
@@ -350,9 +365,24 @@
                Integer.valueOf(sysUser.getDeptId()));
        return R.ok();
    }
    @ApiOperation(value = "查询当前用户审批通过且未销假的请假单")
    @GetMapping(value = "/listLeaveApplications")
    public R<List<OaApprovalApplicationAttendance>> listLeaveApplications() {
        List<Integer> applicationsIds = approvalApplicationsService.lambdaQuery()
                .eq(OaApprovalApplications::getApprovalId, ApprovalTypeEnum.LEAVE.getCode())
                .eq(OaApprovalApplications::getApplicantUserId, tokenService.getLoginUser().getUserId())
                .eq(OaApprovalApplications::getApprovalStatus, 2)
                .list().stream().map(OaApprovalApplications::getId).collect(Collectors.toList());
        if (applicationsIds.isEmpty()){
            return R.ok(new ArrayList<>());
        }
        List<OaApprovalApplicationAttendance> list = approvalApplicationAttendanceService.lambdaQuery()
                .in(OaApprovalApplicationAttendance::getApprovalApplicationId, applicationsIds).list();
        return R.ok(list);
    }
    @Log(title = "审批-发起报销申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起报销申请")
    @Transactional
    @PostMapping(value = "/addReimbursement")
    public R addReimbursement(@RequestBody AddReimbursementDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -382,9 +412,10 @@
        approvalApplicationReimbursementService.save(oaApprovalApplicationReimbursement);
        BigDecimal total = new BigDecimal(0);
        List<OaApprovalApplicationReimbursementItem> oaApprovalApplicationReimbursementItems = new ArrayList<>();
        for (OaApprovalApplicationReimbursementItem oaApprovalApplicationReimbursementItem : oaApprovalApplicationReimbursementItems) {
            oaApprovalApplicationReimbursementItem.setApprovalApplicationId(oaApprovalApplicationReimbursement.getId());
        for (OaApprovalApplicationReimbursementItem oaApprovalApplicationReimbursementItem : dto.getItems()) {
            oaApprovalApplicationReimbursementItem.setApprovalApplicationId(oaApprovalApplications.getId());
            total = total.add(oaApprovalApplicationReimbursementItem.getAmount());
            oaApprovalApplicationReimbursementItems.add(oaApprovalApplicationReimbursementItem);
        }
        oaApprovalApplicationReimbursement.setReimbursementAmount(total);
        approvalApplicationReimbursementService.updateById(oaApprovalApplicationReimbursement);
@@ -396,6 +427,7 @@
    }
    @Log(title = "审批-发起款项申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起款项申请")
    @Transactional
    @PostMapping(value = "/addMoney")
    public R addMoney(@RequestBody AddMoneyDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -431,6 +463,7 @@
    @Log(title = "审批-发起合同文件申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起合同文件申请")
    @PostMapping(value = "/addContract")
    @Transactional
    public R addContract(@RequestBody AddContractDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        String code = "Contract-"+sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);
@@ -467,6 +500,7 @@
    }
    @Log(title = "审批-发起进度款支付申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起进度款支付申请")
    @Transactional
    @PostMapping(value = "/addPayment")
    public R addPayment(@RequestBody AddPaymentDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -505,6 +539,7 @@
    }
    @Log(title = "审批-发起内部联系单申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起内部联系单申请")
    @Transactional
    @PostMapping(value = "/addContact")
    public R addContact(@RequestBody AddContactDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -540,6 +575,7 @@
    }
    @Log(title = "审批-发起广告制作申请", businessType = BusinessType.INSERT)
    @ApiOperation(value = "发起广告制作申请")
    @Transactional
    @PostMapping(value = "/addAdvertisement")
    public R addAdvertisement(@RequestBody AddAdvertisementDTO dto) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
@@ -581,9 +617,9 @@
    }
    @Log(title = "审批-撤回通用审批单", businessType = BusinessType.UPDATE)
    @ApiOperation(value = "撤回审批单:仅更新状态为已撤回")
    @ApiOperation(value = "撤回审批单(通用接口)")
    @PutMapping(value = "/withdraw/{id}")
    public R withdraw(@PathVariable Integer id) {
    public R<?> withdraw(@PathVariable Integer id) {
        OaApprovalApplications current = approvalApplicationsService.getById(id);
        if (current == null) {
            throw new ServiceException("审批单不存在");