forked from gzzfw/backEnd/gz-dyh

liyj
2024-09-08 261d715822e5464334ea1bffc60a5f86e371d8f7
dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/wechat/FileInfoWechatController.java
@@ -18,6 +18,9 @@
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;
@@ -35,6 +38,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
 * @title: 附件信息表接口api-wechat端
@@ -61,17 +65,17 @@
    /**
     * 页面附件上传-文件流方式
     * @url {ctx}/api/wechat/fileInfo/upload/{mainId}/{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 = "mainId") String mainId,
                         @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{
            PaUserDTO loginUser = custClient.paClientGetUserAll(userId);
@@ -93,9 +97,15 @@
                        if (StringUtils.isEmpty(ownerType)) {
                            ownerType = FileOwnerTypeBaseEnum.OWNER_TYPE_000.getIndex();
                        }
                        FileInfo fileInfo = service.webUploadFile(file, mainId, 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 {
@@ -175,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());
        }
    }
}