Files
klp-oa/klp-wms/src/main/java/com/klp/controller/WmsPurchasePlanController.java
JR 831695e236 (ocrfeat): 增加 PDF 文件文字识别功能
- 实现了 ITesseractOcrService接口中的 recognizePdfText 方法- 添加了 PDFBox 依赖用于处理 PDF 文件
- 在 TesseractOcrServiceImpl 中实现了 PDF 文件的文字提取和清理
- 在 WmsPurchasePlanController 中添加了识别 PDF 文件文字的 API 接口
2025-08-04 10:18:17 +08:00

144 lines
4.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.klp.controller;
import java.util.List;
import java.util.Arrays;
import java.util.Map;
import com.klp.domain.vo.RecognizeTextVo;
import com.klp.service.ITesseractOcrService;
import lombok.RequiredArgsConstructor;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import com.klp.common.annotation.RepeatSubmit;
import com.klp.common.annotation.Log;
import com.klp.common.core.controller.BaseController;
import com.klp.common.core.domain.PageQuery;
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.enums.BusinessType;
import com.klp.common.utils.poi.ExcelUtil;
import com.klp.domain.vo.WmsPurchasePlanVo;
import com.klp.domain.bo.WmsPurchasePlanBo;
import com.klp.service.IWmsPurchasePlanService;
import com.klp.common.core.page.TableDataInfo;
/**
* 采购计划主
*
* @author Joshi
* @date 2025-07-18
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/wms/purchasePlan")
public class WmsPurchasePlanController extends BaseController {
private final IWmsPurchasePlanService iWmsPurchasePlanService;
private final ITesseractOcrService iTesseractOcrService;
/**
* 新增采购计划(含明细)
*/
@PostMapping("/addWithDetails")
public R<Void> addPurchasePlan(@RequestBody WmsPurchasePlanVo planVo) {
return toAjax(iWmsPurchasePlanService.insertWithDetails(planVo));
}
/**
* 根据订单ID生成推荐采购计划只返回不落库
*/
@GetMapping("/recommend/{orderId}")
public R<WmsPurchasePlanVo> recommendPurchasePlan(@PathVariable Long orderId) {
WmsPurchasePlanVo planVo = iWmsPurchasePlanService.recommendPurchasePlanByOrder(orderId);
return R.ok(planVo);
}
/**
* 识别图片中的文字
* @param request 图片地址
* @return 识别出的文字
*/
@PostMapping("/recognizeText")
public R<RecognizeTextVo> recognize(@RequestBody Map<String, String> request) {
String imgUrl = request.get("imgUrl");
String text = iTesseractOcrService.recognizeText(imgUrl);
return R.ok(new RecognizeTextVo(text));
}
/**
* 识别PDF文件中的文字
* @param request PDF文件地址
* @return 识别出的文字
*/
@PostMapping("/recognizePdfText")
public R<RecognizeTextVo> recognizePdf(@RequestBody Map<String, String> request) {
String pdfUrl = request.get("pdfUrl");
String text = iTesseractOcrService.recognizePdfText(pdfUrl);
return R.ok(new RecognizeTextVo(text));
}
/**
* 查询采购计划主列表
*/
@GetMapping("/list")
public TableDataInfo<WmsPurchasePlanVo> list(WmsPurchasePlanBo bo, PageQuery pageQuery) {
return iWmsPurchasePlanService.queryPageList(bo, pageQuery);
}
/**
* 导出采购计划主列表
*/
@Log(title = "采购计划主", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(WmsPurchasePlanBo bo, HttpServletResponse response) {
List<WmsPurchasePlanVo> list = iWmsPurchasePlanService.queryList(bo);
ExcelUtil.exportExcel(list, "采购计划主", WmsPurchasePlanVo.class, response);
}
/**
* 获取采购计划主详细信息
*
* @param planId 主键
*/
@GetMapping("/{planId}")
public R<WmsPurchasePlanVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long planId) {
return R.ok(iWmsPurchasePlanService.queryById(planId));
}
/**
* 新增采购计划主
*/
@Log(title = "采购计划主", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody WmsPurchasePlanBo bo) {
return toAjax(iWmsPurchasePlanService.insertByBo(bo));
}
/**
* 修改采购计划主
*/
@Log(title = "采购计划主", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WmsPurchasePlanBo bo) {
return toAjax(iWmsPurchasePlanService.updateByBo(bo));
}
/**
* 删除采购计划主
*
* @param planIds 主键串
*/
@Log(title = "采购计划主", businessType = BusinessType.DELETE)
@DeleteMapping("/{planIds}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] planIds) {
return toAjax(iWmsPurchasePlanService.deleteWithValidByIds(Arrays.asList(planIds), true));
}
}