dengzedong
2024-10-10 c12dae87f1dba43ccc2c5966a134ddf88b5eb102
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
package com.iailab.module.model.mpk.controller.admin;
 
import com.iailab.framework.common.page.PageData;
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.module.model.mpk.dto.MpkFileDTO;
import com.iailab.module.model.mpk.service.MpkFileService;
import io.swagger.v3.oas.annotations.Operation;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
 
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.*;
 
import static com.iailab.framework.common.pojo.CommonResult.success;
 
/**
 * @author dzd
 * @Description
 * @createTime 2024年08月14日
 */
@RestController
@RequestMapping("/model/mpk/file")
public class MpkFileController {
    @Autowired
    private MpkFileService mpkFileService;
 
    @GetMapping("page")
    @Operation(summary = "分页")
    @PreAuthorize("@ss.hasPermission('mpk:file:query')")
    public CommonResult<PageData<MpkFileDTO>> page(@RequestParam Map<String, Object> params) {
        PageData<MpkFileDTO> page = mpkFileService.page(params);
        return success(page);
    }
 
    @PreAuthorize("@ss.hasPermission('mpk:file:query')")
    @GetMapping("{id}")
    public CommonResult<MpkFileDTO> info(@PathVariable("id") String id) {
        MpkFileDTO schedule = mpkFileService.get(id);
        List<String> menuAndGroup = new ArrayList<>();
        menuAndGroup.add(schedule.getMenuName());
        menuAndGroup.add(schedule.getGroupName());
        schedule.setMenuAndGroup(menuAndGroup);
        return success(schedule);
    }
 
    @PreAuthorize("@ss.hasPermission('mpk:file:query')")
    @GetMapping("list")
    public CommonResult<List<MpkFileDTO>> list() {
        List<MpkFileDTO> list = mpkFileService.list(new HashMap<>());
 
        return success(list);
    }
 
    @PreAuthorize("@ss.hasPermission('mpk:file:create')")
    @PostMapping
    public CommonResult<Boolean> save(@RequestBody MpkFileDTO dto) {
        if (!CollectionUtils.isEmpty(dto.getMenuAndGroup())) {
            dto.setMenuName(dto.getMenuAndGroup().get(0));
            if (dto.getMenuAndGroup().size() > 1) {
                dto.setGroupName(dto.getMenuAndGroup().get(1));
            }
        }
        mpkFileService.save(dto);
        return CommonResult.success(true);
    }
 
    @PreAuthorize("@ss.hasPermission('mpk:file:delete')")
    @DeleteMapping
    public CommonResult<Boolean> delete(String id) {
        mpkFileService.delete(id);
        return CommonResult.success(true);
    }
 
    @PreAuthorize("@ss.hasPermission('mpk:file:update')")
    @PutMapping
    public CommonResult<Boolean> update(@RequestBody MpkFileDTO dto) {
        if (!CollectionUtils.isEmpty(dto.getMenuAndGroup())) {
            dto.setMenuName(dto.getMenuAndGroup().get(0));
            if (dto.getMenuAndGroup().size() > 1) {
                dto.setGroupName(dto.getMenuAndGroup().get(1));
            }
        }
        mpkFileService.update(dto);
        return CommonResult.success(true);
    }
 
    @GetMapping("generat")
    public void generat(String id, String remark,String zipFileName, HttpServletResponse response) {
        try {
            byte[] data = mpkFileService.generatorCode(id, remark,zipFileName);
 
            response.reset();
            response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(zipFileName, "UTF-8") + "\"");
            response.addHeader("Content-Length", "" + data.length);
            response.setContentType("application/octet-stream; charset=UTF-8");
 
            IOUtils.write(data, response.getOutputStream());
        } catch (Exception e) {
            throw new RuntimeException("代码生成异常",e);
        }
    }
 
    @GetMapping("packageModel")
    public void packageModel(String ids ,String projectId,String log ,String projectName,String version,String zipFileName,HttpServletResponse response) throws IOException {
        byte[] data;
        try {
            data = mpkFileService.packageModel(Arrays.asList(ids.split(",")),projectId,projectName,zipFileName,log,version);
        } catch (InterruptedException e) {
            throw new RuntimeException("模型打包失败",e);
        }
 
        response.reset();
        response.setHeader("Content-Disposition", "attachment; filename=\"" + URLEncoder.encode(zipFileName, "UTF-8") + "\"");
        response.addHeader("Content-Length", "" + data.length);
        response.setContentType("application/octet-stream; charset=UTF-8");
 
        IOUtils.write(data, response.getOutputStream());
    }
 
    @PostMapping("/upload")
    @Operation(summary = "python文件上传")
    public CommonResult<Map<String,String>> upload(@RequestParam("file") MultipartFile file) throws Exception {
        Map<String,String> result = mpkFileService.savePyFile(file);
        return success(result);
    }
 
    @PostMapping("/publish")
    public CommonResult<String> publish(@RequestBody Map<String, Object> params) {
        return mpkFileService.publish(params);
    }
}