package com.ai.da.controller; import com.ai.da.common.config.exception.BusinessException; import com.ai.da.common.response.Response; import com.ai.da.common.utils.MD5Utils; import com.ai.da.model.dto.*; import com.ai.da.model.vo.*; import com.ai.da.service.CollectionElementService; import com.ai.da.service.PanToneService; import com.ai.da.service.SysFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.validation.Valid; import javax.validation.constraints.Pattern; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @Api(tags = "collection模块") @Slf4j @RestController @RequestMapping("/api/element") public class ElementController { @Resource private CollectionElementService collectionElementService; @Resource private PanToneService panToneService; @Resource private SysFileService sysFileService; @ApiOperation(value = "初始化系统文件") @PostMapping("/initDefaultSysFile") public Response initDefaultSysFile(@RequestParam("validate") String validateUse) { if (validateUse.equals("da_fl_mm_dad88888")) { //防止被调用 sysFileService.initDefaultSysFile(); } return Response.success(); } @ApiOperation(value = "element文件上传") @PostMapping("/upload") public Response upload(@RequestParam("file") MultipartFile file, @ApiParam("一级类型 Moodboard Printboard Sketchboard MarketingSketch Colorboard") @RequestParam(value = "level1Type") String level1Type, @RequestParam(name = "gender", required = false) String gender, @ApiParam("本地时区,比如 'Asia/Tokyo' 东京时间 , 'Asia/Shanghai' 北京时间 由js本地获取") @RequestParam(value = "timeZone") String timeZone) { if (null == file || StringUtils.isEmpty(file.getOriginalFilename())) { throw new BusinessException("file.cannot.be.empty"); } return Response.success(collectionElementService.upload( new CollectionElementUploadDTO(file, level1Type, gender, timeZone, MD5Utils.encryptFile(file)))); } @ApiOperation(value = "element文件删除") @PostMapping("/delete") public Response delete(@Valid @RequestBody CollectionDeleteFileDTO deleteFileDTO) { collectionElementService.delete(deleteFileDTO.getId()); return Response.success(); } /** 该功能已删除 */ @Deprecated @ApiOperation(value = "生成印花") @PostMapping("/generatePrint") public Response generatePrint(@Valid @RequestBody CollectionGeneratePrintDTO generatePrintDTO) { return Response.success(collectionElementService.generatePrint(generatePrintDTO)); } @ApiOperation(value = "保存印花") @PostMapping("/savePrint") public Response savePrint(@Valid @RequestBody CollectionSavePrintDTO savePrintDTO) { return Response.success(collectionElementService.savePrint(savePrintDTO)); } @ApiOperation(value = "通过tcx值获取潘通信息") @GetMapping("/getRgbByTcx") public Response getRgbByHsv(@ApiParam("tcx") @RequestParam("tcx") String tcx) { return Response.success(panToneService.getByTCX(tcx)); } @ApiOperation(value = "通过hsv值获取潘通信息") @GetMapping("/getRgbByHsv") public Response getRgbByHsv(@RequestParam("h") Integer h, @RequestParam("s") Integer s, @RequestParam("v") Integer v) { return Response.success(panToneService.getByHSV(h, s, v)); } @ApiOperation(value = "通过hsv值数组批量获取潘通信息") @PostMapping("/getRgbByHsvBatch") public Response> getRgbByHsvBatch(@RequestBody @Valid List rgbByHsvBatch) { return Response.success(panToneService.getRgbByHsvBatch(rgbByHsvBatch)); } @ApiOperation(value = "刷新历史数据") @PostMapping("/refreshHistoryData") public Response refreshHistoryData() { collectionElementService.refreshHistoryData(); return Response.success(); } @ApiOperation(value = "图片分割") @PostMapping("/imageSegmentation") public Response> selectedImageSeg( @RequestPart(value = "file", required = false) MultipartFile[] file, @RequestParam(value = "type", required = false) @Pattern(regexp = "sketch|product", message = "类型必须是sketch或product") String type, @RequestParam(value = "id", required = false) Long id, @RequestParam(value = "sourceType", required = false) @Pattern(regexp = "library|upload", message = "id是从library中获取的还是上传的") String sourceType) { // 过滤空文件 List nonEmptyFiles = Arrays.stream(file) .filter(item -> !item.isEmpty()) .collect(Collectors.toList()); // 参数校验 if ((nonEmptyFiles.isEmpty()) && id == null) { throw new BusinessException("必须提供文件上传或ID"); } if (!nonEmptyFiles.isEmpty() && id != null) { throw new BusinessException("不能同时提供文件上传和ID"); } return Response.success(collectionElementService.selectedImageSeg(nonEmptyFiles, id, type, sourceType)); } }