package com.klp.controller; import com.klp.common.annotation.Log; import com.klp.common.core.controller.BaseController; import com.klp.common.core.domain.R; import com.klp.common.core.validate.AddGroup; import com.klp.common.core.validate.EditGroup; import com.klp.common.core.validate.QueryGroup; import com.klp.common.enums.BusinessType; import com.klp.common.utils.poi.ExcelUtil; import com.klp.domain.bo.ImageRecognitionBo; import com.klp.domain.vo.ImageRecognitionVo; import com.klp.service.IImageRecognitionService; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; /** * 图片识别控制器 * * @author klp * @date 2025-01-27 */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/wms/imageRecognition") public class WmsImageRecognitionController extends BaseController { private final IImageRecognitionService iImageRecognitionService; /** * 识别图片内容 */ @PostMapping("/recognize") public R recognize(@RequestBody @Validated(AddGroup.class) ImageRecognitionBo bo) { return R.ok(iImageRecognitionService.recognizeImage(bo)); } /** * 识别BOM内容 */ @PostMapping("/recognizeBom") public R recognizeBom(@RequestBody @Validated(AddGroup.class) ImageRecognitionBo bo) { bo.setRecognitionType("bom"); return R.ok(iImageRecognitionService.recognizeBom(bo)); } /** * 识别文字内容 */ @PostMapping("/recognizeText") public R recognizeText(@RequestBody @Validated(AddGroup.class) ImageRecognitionBo bo) { bo.setRecognitionType("text"); return R.ok(iImageRecognitionService.recognizeText(bo)); } /** * 批量识别图片 */ @PostMapping("/recognizeBatch") public R> recognizeBatch(@RequestBody @Validated(AddGroup.class) List boList) { return R.ok(iImageRecognitionService.recognizeImages(boList)); } /** * 测试AI连接 */ @PostMapping("/testConnection") public R> testConnection() { return R.ok(iImageRecognitionService.testAiConnection()); } /** * 获取识别配置 */ @GetMapping("/config") public R> getConfig() { return R.ok(iImageRecognitionService.getRecognitionConfig()); } /** * 更新识别配置 */ @PostMapping("/config") public R updateConfig(@RequestBody Map config) { iImageRecognitionService.updateRecognitionConfig(config); return R.ok(); } /** * 获取识别历史 */ @PostMapping("/history") public R> getHistory(@RequestBody Map pageQuery) { return R.ok(iImageRecognitionService.getRecognitionHistory(pageQuery)); } /** * 简单识别接口(兼容原有格式) */ @PostMapping("/recognizeTextSimple") public R recognizeTextSimple(@RequestBody Map request) { String imgUrl = request.get("imgUrl"); if (imgUrl == null || imgUrl.trim().isEmpty()) { return R.fail("图片URL不能为空"); } ImageRecognitionBo bo = new ImageRecognitionBo(); bo.setImageUrl(imgUrl); bo.setRecognitionType("text"); ImageRecognitionVo result = iImageRecognitionService.recognizeText(bo); return R.ok(result); } /** * 识别BOM接口(兼容原有格式) */ @PostMapping("/recognizeBomSimple") public R recognizeBomSimple(@RequestBody Map request) { String imgUrl = request.get("imgUrl"); if (imgUrl == null || imgUrl.trim().isEmpty()) { return R.fail("图片URL不能为空"); } ImageRecognitionBo bo = new ImageRecognitionBo(); bo.setImageUrl(imgUrl); bo.setRecognitionType("bom"); ImageRecognitionVo result = iImageRecognitionService.recognizeBom(bo); return R.ok(result); } }