| | |
| | | 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.util.HerbUtil; |
| | | import org.jeecg.modules.dry.vo.CommandMessageVo; |
| | | import org.jeecg.modules.dry.vo.DryHerbInfoVo; |
| | | import org.jeecg.modules.dry.vo.RealTimeDataVo; |
| | |
| | | @Autowired |
| | | private IDryRealTimeDataService dryRealTimeDataService; |
| | | |
| | | @Autowired |
| | | private HerbUtil herbUtil; |
| | | // @Autowired |
| | | // private HerbUtil herbUtil; |
| | | |
| | | @Autowired |
| | | private IDryHerbInfoService herbInfoService; |
| | |
| | | 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); |
| | | |
| | | if(predict.size()>0) { |
| | | 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); |
| | | } else { |
| | | return Result.error("AI识别服务异常"); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return Result.error("AI识别服务异常"); |
| | | } |
| | | } |
| | | // |
| | | // @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); |
| | | // |
| | | // if(predict.size()>0) { |
| | | // 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); |
| | | // } else { |
| | | // return Result.error("AI识别服务异常"); |
| | | // } |
| | | // |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // return Result.error("AI识别服务异常"); |
| | | // } |
| | | // } |
| | | |
| | | } |