From b718daf58eec8845787de29eaeb25489ab0b6652 Mon Sep 17 00:00:00 2001 From: zhouxiantao <1026371446@qq.com> Date: Sun, 08 Sep 2024 16:03:38 +0800 Subject: [PATCH] 小程序办件进度 --- dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java | 133 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 127 insertions(+), 6 deletions(-) diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java index 09a62b1..183f1e9 100644 --- a/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java @@ -8,14 +8,19 @@ import cn.huge.module.client.api.impl.CustClientImpl; import cn.huge.module.constant.BaseConsts; import cn.huge.module.cust.dto.CtUserDTO; +import cn.huge.module.cust.dto.PaUserDTO; import cn.huge.module.file.domain.dto.UploaderDTO; import cn.huge.module.file.domain.po.FileInfo; import cn.huge.module.file.service.FileInfoService; import cn.huge.module.file.service.FileRelateService; import cn.huge.module.file.utils.FileUtils; import cn.huge.module.file.utils.FtpUtils; +import cn.huge.module.sys.constant.FileBaseConsts; import cn.huge.module.sys.constant.FileOwnerTypeBaseEnum; import cn.huge.module.sys.dto.FileInfoBaseDTO; +import cn.huge.module.sys.dto.IdcardOcrResultDTO; +import cn.huge.module.utils.BaiduOcrUtils; +import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -33,6 +38,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Map; /** * @title: 附件信息表接口api-wechat端 @@ -59,19 +65,25 @@ /** * 页面附件上传-文件流方式 - * @url {ctx}/api/wechat/fileInfo/upload/{ownerId}/{ownerType} + * @url {ctx}/api/wechat/fileInfo/upload?mainId=&ownerId=&ownerType= + * @param mainId 所属业务主体编号 * @param ownerId 所属业务编号 * @param ownerType 所属业务类型 * @param request 请求头 * @return Object */ - @PostMapping("/upload/{ownerId}/{ownerType}") - public Object upload(@PathVariable(value = "ownerId") String ownerId, @PathVariable(value = "ownerType") String ownerType, + @PostMapping("/upload") + public Object upload(@RequestParam(value = "mainId") String mainId, + @RequestParam(value = "ownerId") String ownerId, + @RequestParam(value = "ownerType") String ownerType, @CurrentUser String userId, MultipartHttpServletRequest request) { try{ - CtUserDTO loginUser = custClient.clientGetUser(userId); + PaUserDTO loginUser = custClient.paClientGetUserAll(userId); UploaderDTO uploaderDTO = new UploaderDTO(); - BeanUtils.copyProperties(loginUser, uploaderDTO); + uploaderDTO.setUploaderId(loginUser.getId()); + uploaderDTO.setUploaderName(loginUser.getTrueName()); + uploaderDTO.setUploaderType(FileBaseConsts.UPLOADER_TYPE_1); + uploaderDTO.setCustId(loginUser.getCustId()); List<FileInfoBaseDTO> files = new ArrayList<>(); Iterator<String> itr = request.getFileNames(); int fileCount = fileRelateService.countByOwnerIdAndType(ownerId, ownerType)+1; @@ -85,9 +97,15 @@ if (StringUtils.isEmpty(ownerType)) { ownerType = FileOwnerTypeBaseEnum.OWNER_TYPE_000.getIndex(); } - FileInfo fileInfo = service.webPploadFile(file, ownerId, ownerType, fileCount, uploaderDTO); + FileInfo fileInfo = service.wechatUploadFile(file, mainId, ownerId, ownerType, fileCount, uploaderDTO); FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO(); BeanUtils.copyProperties(fileInfo, fileInfoBaseDTO); + + // 如果是身份证,就调用ocr识别 + if (FileOwnerTypeBaseEnum.OWNER_TYPE_202.getIndex().equals(ownerType)){ + fileInfoBaseDTO.setIdcardOcrResult(BaiduOcrUtils.ocrIdcard(file.getBytes())); + } + files.add(fileInfoBaseDTO); fileCount++; } else { @@ -167,7 +185,110 @@ } } + /** + * 删除附件 + * @url {ctx}/api/wechat/fileInfo/deleteFileById?id= + * @param id 附件编号 + * @return Object + */ + @GetMapping("/deleteFileById") + public Object deleteFileById(@RequestParam(value = "id") String id) { + try { + service.deleteFileById(id); + return ReturnSucUtils.getRepInfo(); + } catch (Exception e) { + return ReturnFailUtils.getRepInfo(); + } + } + /** + * 根据多个所属编号查询附件 + * @url {ctx}/api/wechat/fileInfo/listByMainId + * @return Object + */ + @GetMapping("/listByMainId") + public Object listByMainId(@RequestParam(value = "mainId") String mainId) { + try { + return ReturnSucUtils.getRepInfo(service.listByMainId(mainId)); + } catch (Exception e) { + return ReturnFailUtils.getRepInfo(); + } + } + /** + * ocr识别身份证 + * @url {ctx}/api/wechat/fileInfo/wecatRecognition?ownerId=&ownerType= + * @param request + * @return Object + */ + @PostMapping(value = "/wecatRecognition") + public Object wecatRecognition(MultipartHttpServletRequest request, @CurrentUser String userId){ + try{ + // todo 判断是小程序还是PC +// UploaderDTO uploaderDTO = new UploaderDTO(); +// PaUserDTO paUserDTO = custClient.paClientGetUserAll(userId); +// BeanUtils.copyProperties(paUserDTO, uploaderDTO); + Map<String , Object> result = Maps.newHashMap(); + Iterator<String> itr = request.getFileNames(); + while (itr.hasNext()) { + MultipartFile file = request.getFile(itr.next()); +// try{ +// String ownerId = request.getParameter("ownerId"); +// if (StringUtils.isNotEmpty(ownerId)) { +// String ownerType = request.getParameter("ownerType"); +// int fileCount = fileRelateService.countByOwnerIdAndType(ownerId, ownerType)+1; +// if(StringUtils.isEmpty(ownerType)){ +// ownerType = FileOwnerTypeBaseEnum.OWNER_TYPE_000.getIndex(); +// } +// FileInfo fileInfo = service.wechatUploadFile(file, ownerId,ownerId, ownerType, fileCount, uploaderDTO); +// FileInfoBaseDTO fileInfoBaseDTO = new FileInfoBaseDTO(); +// BeanUtils.copyProperties(fileInfo, fileInfoBaseDTO); +// result.put("attachment", fileInfoBaseDTO); +// } +// }catch (Exception e){ +// log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e); +// } + try{ + IdcardOcrResultDTO map = BaiduOcrUtils.ocrIdcard(file.getBytes()); + result.put("ocrResult", map); + }catch (Exception e){ + log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e); + return ReturnFailUtils.getRepInfo("OCR失败失败!"); + } + } + return ReturnSucUtils.getRepInfo(result); + }catch (Exception e){ + log.error("Controller接口[FileInfoWechatController.wecatRecognition]请求异常:"+e, e); + return ReturnFailUtils.getRepInfo(e.getMessage()); + } + } + + /** + * ocr识别文字 + * @url {ctx}/api/wechat/fileInfo/recognitionText + * @param request + * @return Object + */ + @PostMapping(value = "/recognitionText") + public Object recognitionText(MultipartHttpServletRequest request){ + try{ + Map<String , Object> result = Maps.newHashMap(); + Iterator<String> itr = request.getFileNames(); + while (itr.hasNext()) { + MultipartFile file = request.getFile(itr.next()); + try{ + Map<String , Object> map = BaiduOcrUtils.ocrText(file.getBytes()); + result.put("ocrResult", map); + }catch (Exception e){ + log.error("Controller接口[FileInfoWechatController.recognitionText]请求异常:"+e, e); + return ReturnFailUtils.getRepInfo("OCR失败!"); + } + } + return ReturnSucUtils.getRepInfo("识别成功", result); + }catch (Exception e){ + log.error("Controller接口[FileInfoWechatController.recognitionText]请求异常:"+e, e); + return ReturnFailUtils.getRepInfo(e.getMessage()); + } + } } -- Gitblit v1.8.0