2 天以前 f350465db70d6f9db9494483ee0cec7793a9007b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.ruoyi.collaborativeApproval.controller;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.approve.bean.vo.ApproveProcessVO;
import com.ruoyi.approve.service.IApproveProcessService;
import com.ruoyi.collaborativeApproval.dto.SealApplicationManagementDTO;
import com.ruoyi.collaborativeApproval.pojo.SealApplicationManagement;
import com.ruoyi.collaborativeApproval.service.SealApplicationManagementService;
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.sales.mapper.CommonFileMapper;
import com.ruoyi.sales.pojo.CommonFile;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
 
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
 
@AllArgsConstructor
@RestController
@RequestMapping("/sealApplicationManagement")
@Api(tags = "用印申请管理")
public class SealApplicationManagementController {
    @Autowired
    private SealApplicationManagementService sealApplicationManagementService;
 
    @Autowired
    private IApproveProcessService approveProcessService;
 
    @Autowired
    private CommonFileMapper commonFileMapper;
 
    @GetMapping("/getList")
    @ApiOperation("分页查询")
    public AjaxResult listPage(Page page, SealApplicationManagement sealApplicationManagement){
        IPage<SealApplicationManagementDTO> result = sealApplicationManagementService.listPage(page,sealApplicationManagement);
        for (SealApplicationManagementDTO record : result.getRecords()) {
            if (record.getApproveProcessId() != null) {
                record.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                        .eq(CommonFile::getCommonId, record.getApproveProcessId())
                        .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
            }
        }
        return AjaxResult.success(result);
    }
 
    @PostMapping("/add")
    @ApiOperation("新增/重新申请用印")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult add(@RequestBody SealApplicationManagement sealApplicationManagement) throws Exception {
        sealApplicationManagement.setStatus("pending");
        if (sealApplicationManagement.getId() == null) {
            sealApplicationManagementService.save(sealApplicationManagement);
        } else {
            // 重新申请:清理旧审批流程关联的附件,避免遗留
            SealApplicationManagement old = sealApplicationManagementService.getById(sealApplicationManagement.getId());
            if (old != null && old.getApproveProcessId() != null) {
                commonFileMapper.delete(new LambdaQueryWrapper<CommonFile>()
                        .eq(CommonFile::getCommonId, old.getApproveProcessId())
                        .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue()));
            }
            sealApplicationManagementService.updateById(sealApplicationManagement);
        }
        // 发起协同统一审核流程(用印审批)
        ApproveProcessVO vo = new ApproveProcessVO();
        vo.setApproveType(9);
        vo.setApproveReason(sealApplicationManagement.getApplicationNum() + ":" + sealApplicationManagement.getTitle());
        vo.setApproveDeptId(sealApplicationManagement.getDeptId());
        vo.setApproveTime(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        Long approveProcessId = approveProcessService.addApprove(vo);
        // 回填审批流程id,供审批回调更新状态、详情查询附件
        sealApplicationManagement.setApproveProcessId(approveProcessId);
        sealApplicationManagementService.updateById(sealApplicationManagement);
        // 保存用印申请附件,关联到审批流程
        if (!CollectionUtils.isEmpty(sealApplicationManagement.getAttachmentList())) {
            for (CommonFile cf : sealApplicationManagement.getAttachmentList()) {
                CommonFile record = new CommonFile();
                record.setCommonId(approveProcessId);
                record.setName(cf.getName());
                record.setUrl(cf.getUrl());
                record.setType(FileNameType.ApproveProcess.getValue());
                record.setCreateTime(LocalDateTime.now());
                record.setUpdateTime(LocalDateTime.now());
                commonFileMapper.insert(record);
            }
        }
        return AjaxResult.success();
    }
 
    @PostMapping("/update")
    @ApiOperation("修改")
    public AjaxResult update(@RequestBody SealApplicationManagement sealApplicationManagement){
        return AjaxResult.success(sealApplicationManagementService.updateById(sealApplicationManagement));
    }
 
    @DeleteMapping("/delete")
    @ApiOperation("删除")
    public AjaxResult delete(@PathVariable("ids") List<Long> ids){
        if (CollectionUtils.isEmpty(ids)) {
            throw new RuntimeException("请传入要删除的ID");
        }
        return AjaxResult.success(sealApplicationManagementService.removeBatchByIds(ids));
    }
 
    @GetMapping("/detail")
    @ApiOperation("用印申请详情(按审批流程id)")
    public AjaxResult detail(Long approveProcessId){
        SealApplicationManagement seal = sealApplicationManagementService.getOne(new LambdaQueryWrapper<SealApplicationManagement>()
                .eq(SealApplicationManagement::getApproveProcessId, approveProcessId)
                .last("limit 1"));
        if (seal == null) {
            throw new RuntimeException("用印申请不存在");
        }
        seal.setCommonFileList(commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>()
                .eq(CommonFile::getCommonId, approveProcessId)
                .eq(CommonFile::getType, FileNameType.ApproveProcess.getValue())));
        return AjaxResult.success(seal);
    }
 
    @ApiOperation(value = "用印申请管理导出")
    @PostMapping("/export")
    public void export(HttpServletResponse response) {
        List<SealApplicationManagement> accountExpenses = sealApplicationManagementService.list();
        ExcelUtil<SealApplicationManagement> util = new ExcelUtil<SealApplicationManagement>(SealApplicationManagement.class);
        util.exportExcel(response, accountExpenses, "用印申请管理导出");
    }
 
}