云
4 天以前 ccdebc5369c108e6616550bfbe1cd47ec1e05813
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
package cn.iocoder.yudao.module.mes.controller.admin.pd.seal;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.module.mes.controller.admin.pd.project.MesPdProjectController;
import cn.iocoder.yudao.module.mes.service.pd.project.MesPdProjectService;
import cn.iocoder.yudao.module.mes.service.pd.seal.PdSealService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
 
@RestController
@RequestMapping("/mes/pd/seal")
public class PdSealController {
    @Resource private PdSealService service;
    @Resource private MesPdProjectService projectService;
    @Resource private MesPdProjectController projectController;
    @GetMapping("/list") @PreAuthorize("@ss.hasPermission('mes:pd-seal:manage')")
    public CommonResult<List<Map<String,Object>>> list(){ return success(service.seals(false)); }
    @GetMapping("/available") @PreAuthorize("@ss.hasPermission('mes:pd-project:export')")
    public CommonResult<List<Map<String,Object>>> available(){ return success(service.seals(true)); }
    @PostMapping("/upload") @PreAuthorize("@ss.hasPermission('mes:pd-seal:manage')")
    public CommonResult<Long> upload(@RequestParam String name,@RequestParam MultipartFile file) throws Exception { return success(service.upload(name,file,getLoginUserId())); }
    @PutMapping("/enabled") @PreAuthorize("@ss.hasPermission('mes:pd-seal:manage')")
    public CommonResult<Boolean> enabled(@RequestParam long id,@RequestParam boolean enabled){service.setEnabled(id,enabled);return success(true);}
    public record ApplyReq(Long projectId, Long sealId, String reason) {}
    @PostMapping("/apply") @PreAuthorize("@ss.hasPermission('mes:pd-project:export')")
    public CommonResult<Long> apply(@RequestBody ApplyReq req) throws Exception {
        if(req.projectId()==null || req.sealId()==null) throw new cn.iocoder.yudao.framework.common.exception.ServiceException(1_040_990_001,"请选择项目和印章");
        var project=projectService.getProject(req.projectId());
        if(project==null) throw new cn.iocoder.yudao.framework.common.exception.ServiceException(1_040_990_001,"项目不存在");
        return success(service.apply(req.projectId(),project.getTaskCode(),req.sealId(),req.reason(),getLoginUserId(),projectController.createTrackingSnapshot(req.projectId())));
    }
    @GetMapping("/applications") @PreAuthorize("@ss.hasPermission('mes:pd-project:export')")
    public CommonResult<List<Map<String,Object>>> applications(@RequestParam(required=false) Long projectId){ return success(service.applications(getLoginUserId(),projectId)); }
    @GetMapping("/download") @PreAuthorize("@ss.hasPermission('mes:pd-project:export')")
    public void download(@RequestParam long id,HttpServletResponse response) throws Exception {byte[] bytes=service.download(id,getLoginUserId()); response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); response.setHeader("Content-Disposition","attachment; filename=tracking.docx"); response.getOutputStream().write(bytes);}
}