Forráskód Böngészése

feat:鸿森堂舌诊-带舌底功能

caoliqin 3 hete
szülő
commit
30715c3b5d

+ 4 - 0
fs-service/src/main/java/com/fs/aiTongueApi/config/AiTongueConfig.java

@@ -7,4 +7,8 @@ public interface AiTongueConfig {
 //    String appKey="i5h5u6g59dw9x0o6yymd3tf5ea6gcdqi";
 
     String newCheckTongue="http://132.232.234.246:5056/api/detect";
+    /**
+     * AI全息舌诊-带舌底
+     */
+    String quanxiWithUndersideUrl="https://api.aikanshe.com/agency/quanxiWithUnderside";
 }

+ 3 - 0
fs-service/src/main/java/com/fs/aiTongueApi/domain/QueryQuanXi.java

@@ -16,6 +16,9 @@ public class QueryQuanXi {
     // 是否男性 0:女,1-男
     private String male;
 
+    // 舌底文件
+    private String shedi;
+
     // 细分疾病名称,填拼音
     private String desease;
 

+ 2 - 0
fs-service/src/main/java/com/fs/aiTongueApi/service/AiTongueService.java

@@ -15,4 +15,6 @@ public interface AiTongueService {
     AITongueResult<TongueData> quanXiTongue(QueryQuanXi queryQuanXi);
 
     AITongueResult<FsHealthTongue> newCheckTongue(String tongueUrl);
+
+    AITongueResult<TongueData> quanXiTongueWithUnderside(QueryQuanXi queryQuanXi);
 }

+ 44 - 0
fs-service/src/main/java/com/fs/aiTongueApi/service/impl/AiTongueServiceImpl.java

@@ -292,6 +292,50 @@ public class AiTongueServiceImpl implements AiTongueService {
         }
     }
 
+    @Override
+    public AITongueResult<TongueData> quanXiTongueWithUnderside(QueryQuanXi queryQuanXi) {
+        String s="";
+        try {
+            HttpClient httpClient = HttpClients.createDefault();
+            HttpPost httpPost = new HttpPost(AiTongueConfig.quanxiWithUndersideUrl);
+            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+            URL urlItem = new URL(queryQuanXi.getFile());
+            InputStream inputStream =urlItem.openStream();
+            // 添加文件或表单参数
+            builder.addBinaryBody("file", inputStream, ContentType.DEFAULT_BINARY, UUID.randomUUID().toString()+".jpg");
+
+            URL shediUrl = new URL(queryQuanXi.getShedi());
+            InputStream shediInputStream = shediUrl.openStream();
+            builder.addBinaryBody("shedi", shediInputStream, ContentType.DEFAULT_BINARY, UUID.randomUUID().toString()+".jpg");
+            builder.addTextBody("age", queryQuanXi.getAge(), ContentType.create("text/plain", Charset.forName("UTF-8")));
+            builder.addTextBody("male", queryQuanXi.getMale(), ContentType.create("text/plain", Charset.forName("UTF-8")));
+            builder.addTextBody("appkey", getAppKey());
+            if (queryQuanXi.getIsYuejin()!=null){
+                builder.addTextBody("isYuejin", queryQuanXi.getIsYuejin(), ContentType.create("text/plain", Charset.forName("UTF-8")));
+            }
+            if (queryQuanXi.getName()!=null){
+                builder.addTextBody("name", queryQuanXi.getName(), ContentType.create("text/plain", Charset.forName("UTF-8")));
+            }
+            if (queryQuanXi.getDesease()!=null){
+                builder.addTextBody("desease", queryQuanXi.getDesease(), ContentType.create("text/plain", Charset.forName("UTF-8")));
+            }
+
+            HttpEntity multipart = builder.build();
+            httpPost.setEntity(multipart);
+
+            // 执行请求
+            HttpResponse response = httpClient.execute(httpPost);
+            String responseBody = EntityUtils.toString(response.getEntity());
+            log.info(responseBody);
+            s=responseBody;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        AITongueResult<TongueData> aiTongueResult = JSON.parseObject(s, new TypeReference<AITongueResult<TongueData>>(){});
+        return aiTongueResult;
+    }
+
     private static @NotNull AITongueResult<FsHealthTongue> getAiTongueResult(FsHealthTongue healthTongue, String code, String msg) {
         AITongueResult<FsHealthTongue> result = new AITongueResult<>();
         result.setData(healthTongue);

+ 4 - 0
fs-service/src/main/java/com/fs/his/domain/FsHealthTongue.java

@@ -97,4 +97,8 @@ public class FsHealthTongue extends BaseEntity
     @Excel(name = "苔色详细")
     private String taiseDesc;
 
+    /** 舌苔底部图片 */
+    @Excel(name = "舌底图片")
+    private String tongueShediUrl;
+
 }

+ 10 - 0
fs-service/src/main/java/com/fs/his/param/FsHealthTongueUParam.java

@@ -23,4 +23,14 @@ public class FsHealthTongueUParam  {
     private Long patientId;
 
     private String tongueUrl;
+
+    /**
+     * 舌底图片
+     */
+    private String tongueShediUrl;
+
+    /**
+     * 舌诊类型,1-舌诊,2-舌诊带舌底
+     */
+    private Integer quanxiType = 1;
 }

+ 8 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsHealthTongueServiceImpl.java

@@ -212,8 +212,13 @@ public class FsHealthTongueServiceImpl implements IFsHealthTongueService
             queryQuanXi.setMale("0");
         }
 
-        AITongueResult<TongueData> tongueDataAITongueResult = aiTongueService.quanXiTongue(queryQuanXi);
-
+        AITongueResult<TongueData> tongueDataAITongueResult;
+        if(param.getQuanxiType() == 2) {
+            // 舌诊带舌底
+            tongueDataAITongueResult = aiTongueService.quanXiTongueWithUnderside(queryQuanXi);
+        } else {
+            tongueDataAITongueResult = aiTongueService.quanXiTongue(queryQuanXi);
+        }
         if (tongueDataAITongueResult.getCode().equals("40001")) {
             FsHealthTongue fsHealthTongue = new FsHealthTongue();
             fsHealthTongue.setAge(param.getAge());
@@ -223,6 +228,7 @@ public class FsHealthTongueServiceImpl implements IFsHealthTongueService
             fsHealthTongue.setStatus(0);
             fsHealthTongue.setUserId(param.getUserId());
             fsHealthTongue.setTongueUrl(param.getTongueUrl());
+            fsHealthTongue.setTongueShediUrl(param.getTongueShediUrl());
             TongueData data = tongueDataAITongueResult.getData();
             fsHealthTongue.setTongueId(data.getId());
             fsHealthTongue.setCreateTime(new Date());

+ 2 - 0
fs-user-app/src/main/java/com/fs/app/controller/HealthTongueController.java

@@ -157,6 +157,8 @@ public class HealthTongueController extends AppBaseController
         param.setUserId(Long.parseLong(getUserId()));
         R result;
         if("鸿森堂".equals(cloudHostProper.getCompanyName())){
+            // 需求调整:使用带舌底的接口
+            param.setQuanxiType(2);
             result = fsHealthTongueService.insertFsHealthTongueByImgUrlOld(param);
         } else {
             result = fsHealthTongueService.insertFsHealthTongueByImgUrl(param);