12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package com.qmth.ops.biz.service;
- import com.qmth.boot.core.ai.model.doc.ParseDocTask;
- import com.qmth.boot.core.ai.model.doc.ParseDocTaskResult;
- import com.qmth.ops.biz.ai.client.DocApiClient;
- import com.qmth.ops.biz.ai.client.DocApiConfig;
- import com.qmth.ops.biz.ai.exception.DocClientNotFound;
- import com.qmth.ops.biz.domain.OcrSupplier;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
- import javax.annotation.PostConstruct;
- import javax.annotation.Resource;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Service
- public class DocClientService {
- private static final Logger log = LoggerFactory.getLogger(DocClientService.class);
- private DocApiClient defaultClient;
- private Map<Long, DocApiClient> clientMap;
- @Resource
- private OcrSupplierService ocrSupplierService;
- @PostConstruct
- public synchronized void init() {
- defaultClient = null;
- clientMap = new HashMap<>();
- List<OcrSupplier> list = ocrSupplierService.list();
- for (OcrSupplier supplier : list) {
- initApiClient(supplier);
- }
- }
- private void initApiClient(OcrSupplier supplier) {
- try {
- String className = DocApiClient.class.getName().replace(DocApiClient.class.getSimpleName(), supplier.getClientClass());
- DocApiConfig config = new DocApiConfig(supplier);
- Class<?> clientClass = Class.forName(className);
- Object clientInstance = clientClass.getConstructor(DocApiConfig.class).newInstance(config);
- if (clientInstance instanceof DocApiClient) {
- DocApiClient client = (DocApiClient) clientInstance;
- clientMap.put(supplier.getId(), client);
- // 取第一个enable=true的为默认客户端
- if (supplier.getEnable() && defaultClient == null) {
- defaultClient = client;
- }
- }
- } catch (Exception e) {
- log.warn("DocApiClient init error, supplier:{} class:{}", supplier.getName(), supplier.getClientClass());
- }
- }
- public ParseDocTask parseDocTask(byte[] fileData, String fileName) throws Exception {
- if (defaultClient == null) {
- throw new DocClientNotFound();
- }
- return defaultClient.parseDocTask(fileData, fileName);
- }
- public ParseDocTaskResult parseDocTaskQuery(String taskId) throws Exception {
- if (defaultClient == null) {
- throw new DocClientNotFound();
- }
- return defaultClient.parseDocTaskQuery(taskId);
- }
- }
|