package com.iailab.module.model.mcs.pre.controller.admin; import cn.hutool.core.io.FileUtil; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.pojo.PageResult; import com.iailab.module.model.common.enums.CommonConstant; import com.iailab.module.model.mcs.pre.dto.MmPredictItemDTO; import com.iailab.module.model.mcs.pre.service.MmPredictItemService; import com.iailab.module.model.mcs.pre.vo.*; import com.iailab.module.model.mpk.common.utils.IAILModelUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.security.PermitAll; import java.io.File; import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; /** * @author PanZhibao * @date 2021年04月26日 14:42 */ @Slf4j @RestController @RequestMapping("/model/pre/item") public class MmPredictItemController { @Value("${mpk.model-file-path}") private String modelPath; @Autowired private IAILModelUtil iAILModelUtil; @Autowired private MmPredictItemService mmPredictItemService; /** * 预测项列表 */ @GetMapping("/page") @PreAuthorize("@ss.hasPermission('model:pre-item:query')") public CommonResult> page(@Validated MmPredictItemPageReqVO reqVO) { PageResult page = mmPredictItemService.queryPage(reqVO); return success(page); } @GetMapping("/list") public CommonResult> list(Map params) { List list = mmPredictItemService.list(params); return success(list); } /** * 预测项信息 */ @GetMapping("/get/{id}") @PreAuthorize("@ss.hasPermission('model:pre-item:query')") public CommonResult info(@PathVariable("id") String id) { MmPredictItemDTO predictItem = mmPredictItemService.info(id); return success(predictItem); } /** * 保存预测项 */ @PostMapping("/create") @PreAuthorize("@ss.hasPermission('model:pre-item:create')") @DSTransactional(rollbackFor = Exception.class) public CommonResult save(@RequestBody MmPredictItemDTO mmPredictItemDto) { mmPredictItemService.add(mmPredictItemDto); return success(true); } /** * 修改预测项 */ @PutMapping("/update") @PreAuthorize("@ss.hasPermission('model:pre-item:update')") @DSTransactional(rollbackFor = Exception.class) public CommonResult update(@RequestBody MmPredictItemDTO mmPredictItemDTO) { mmPredictItemService.update(mmPredictItemDTO); return success(true); } /** * 删除预测项 */ @DeleteMapping("/delete") @PreAuthorize("@ss.hasPermission('model:pre-item:delete')") @DSTransactional(rollbackFor = Exception.class) public CommonResult delete(@RequestParam("id") String id) { mmPredictItemService.deleteBatch(new String[]{id}); return success(true); } /** * 预测项列表 */ @GetMapping("/count-itemtype") public CommonResult> countItemtype(@RequestParam Map params) { List list = new ArrayList<>(); return success(list); } /** * 上传模型 */ @PermitAll @PostMapping("/upload-model") public CommonResult> uploadModel(@RequestParam("file") MultipartFile file) throws Exception { String uploadDir = modelPath + file.getOriginalFilename(); FileUtil.mkParentDirs(uploadDir); file.transferTo(new File(uploadDir)); Map result = iAILModelUtil.parseModel(uploadDir); result.put("originalFilename", file.getOriginalFilename().replace(CommonConstant.MDK_SUFFIX, "")); return success(result); } }