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 com.iailab.module.model.mpk.service.PackService; import io.swagger.v3.oas.annotations.Operation; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; 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; @Autowired private PackService packService; @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<>(); if (StringUtils.isNotBlank(schedule.getMenuName())) { menuAndGroup.add(schedule.getMenuName()); } if (StringUtils.isNotBlank(schedule.getGroupName())) { menuAndGroup.add(schedule.getGroupName()); } schedule.setMenuAndGroup(menuAndGroup); return success(schedule); } @PreAuthorize("@ss.hasPermission('mpk:file:query')") @GetMapping("list") public CommonResult<List<MpkFileDTO>> list(@RequestParam Map<String, Object> params) { List<MpkFileDTO> list = mpkFileService.list(params); 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)); } } dto.setPyModule(packService.getModelPath(dto.getPkgName())); 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)); } } dto.setPyModule(packService.getModelPath(dto.getPkgName())); 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 projectId,String log ,String projectName,String version,String zipFileName,HttpServletResponse response) throws IOException { byte[] data; try { data = mpkFileService.packageModel(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); } }