From f18634833512849ca9d95bf3522dfb9f7cedc55c Mon Sep 17 00:00:00 2001
From: bsw215583320 <baoshiwei121@163.com>
Date: 星期四, 21 十二月 2023 15:44:09 +0800
Subject: [PATCH] 优化识别返回数据

---
 jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java |   74 +++++++++++++++++++++++++++++++++++++
 1 files changed, 74 insertions(+), 0 deletions(-)

diff --git a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
index b41f4a3..0ca23e1 100644
--- a/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
+++ b/jeecg-module-dry/jeecg-module-dry-biz/src/main/java/org/jeecg/modules/dry/controller/DryRealTimeDataController.java
@@ -1,17 +1,30 @@
 package org.jeecg.modules.dry.controller;
 
 
+import ai.djl.modality.Classifications;
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 
+import org.jeecg.modules.dry.entity.DryHerbInfo;
 import org.jeecg.modules.dry.service.*;
 
+import org.jeecg.modules.dry.util.HerbUtil;
+import org.jeecg.modules.dry.vo.CommandMessageVo;
+import org.jeecg.modules.dry.vo.DryHerbInfoVo;
 import org.jeecg.modules.dry.vo.RealTimeDataVo;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 @Api(tags = "瀹炴椂鏁版嵁澶勭悊鎺у埗鍣�")
@@ -22,6 +35,12 @@
 
     @Autowired
     private IDryRealTimeDataService dryRealTimeDataService;
+
+    @Autowired
+    private HerbUtil herbUtil;
+
+    @Autowired
+    private IDryHerbInfoService herbInfoService;
 
 
     @ApiOperation(value="娴嬭瘯", notes="杩斿洖Hello")
@@ -44,4 +63,59 @@
         return dryRealTimeDataService.queryMachineRealTImeData(realTimeDataVo);
     }
 
+    @ApiOperation(value="鑾峰彇杞﹂棿缁熻鏁版嵁", notes="閫氳繃绉熸埛ID鑾峰彇杞﹂棿缁熻鏁版嵁")
+    @GetMapping("/workshopStatistics")
+    public Result<?> workshopStatistics(RealTimeDataVo realTimeDataVo) {
+        return dryRealTimeDataService.queryWorkshopStatistics(realTimeDataVo);
+    }
+
+
+    /**
+     * 1001 椋庣鍗�     1002 椋庣闄�
+     * 1003 婊氱瓛鍗�     1004 婊氱瓛闄�
+     * 1005 婊氱瓛姝h浆    1006 婊氱瓛鍙嶈浆
+     * 1007 璁惧鍋滄    1010 骞茬嚗鍚姩
+     * 1011 鍓嶉棬寮�鍏�    1012 鍚庨棬寮�鍏�
+     * 1013 鐑鍚姩    1014 寮�闂ㄨ瀵�
+     * 1015 鍑烘枡鎸夐挳
+     */
+    @ApiOperation(value="鍙戦�佹帶鍒舵寚浠�", notes="鍚戞湇鍔$鍙戦�佹帶鍒舵寚浠わ紝鐢辨湇鍔$閫氳繃socket杞彂缁欐帶鍒舵ā鍧�")
+    @PostMapping("/sendCommand")
+    public Result<?> sendCommand(@RequestBody CommandMessageVo msgVo) {
+        return dryRealTimeDataService.sendSocketMsg(msgVo);
+    }
+
+
+    @ApiOperation(value = "鑽潗璇嗗埆")
+    @PostMapping("/identify")
+    public Result<?> identify(@RequestParam("file") MultipartFile file) throws Exception {
+        try {
+            if (file.isEmpty()) {
+                throw new RuntimeException("涓婁紶鏂囦欢涓嶈兘涓虹┖");
+            }
+            InputStream inputStream = file.getInputStream();
+            List<Classifications.Classification> predict = herbUtil.predict(inputStream);
+            Map<String, Double> collect = predict.stream().collect(Collectors.toMap(Classifications.Classification::getClassName, Classifications.Classification::getProbability));
+
+
+            List<DryHerbInfoVo> voList = new ArrayList<>();
+            Set<String> strings = collect.keySet();
+            List<DryHerbInfo> list = herbInfoService.list(new LambdaQueryWrapper<DryHerbInfo>().in(DryHerbInfo::getPinyin, strings));
+            list.forEach(item -> {
+                DryHerbInfoVo dryHerbInfoVo = new DryHerbInfoVo();
+                BeanUtil.copyProperties(item, dryHerbInfoVo);
+                dryHerbInfoVo.setProbabily(collect.get(item.getPinyin()));
+                voList.add(dryHerbInfoVo);
+            });
+
+            List<DryHerbInfoVo> collect1 = voList.stream().sorted(Comparator.comparing(DryHerbInfoVo::getProbabily, Comparator.reverseOrder())).
+                    collect(Collectors.toList());
+
+            return Result.ok(collect1);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Result.error("AI璇嗗埆鏈嶅姟寮傚父");
+        }
+    }
+
 }

--
Gitblit v1.9.3