forked from gzzfw/backEnd/gz-dyh

dyh-service/dyh-sys/src/main/java/cn/huge/module/file/controller/web/FileInfoWebController.java
@@ -1,6 +1,8 @@
package cn.huge.module.file.controller.web;
import cn.huge.base.common.exception.ClientException;
import cn.huge.module.file.domain.dto.IdFileDTO;
import cn.huge.module.utils.BaiduOcrUtils;
import cn.huge.base.common.utils.ContentTypeUtils;
import cn.huge.base.common.utils.ReturnFailUtils;
import cn.huge.base.common.utils.ReturnSucUtils;
@@ -23,9 +25,6 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
@@ -35,12 +34,8 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
 * @title: 附件信息表接口api-web端
@@ -102,6 +97,12 @@
                        FileInfo fileInfo = service.webUploadFile(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 {
@@ -182,6 +183,33 @@
    }
    /**
     * ocr识别文字
     * @url {ctx}/api/web/fileInfo/recognitionText?ownerId=&ownerType=
     * @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接口[FileInfoController.recognitionText]请求异常:"+e, e);
                    return ReturnFailUtils.getRepInfo("OCR失败!");
                }
            }
            return ReturnSucUtils.getRepInfo("识别成功", result);
        }catch (Exception e){
            return ReturnFailUtils.getRepInfo(e.getMessage());
        }
    }
    /**
     * 查看附件组件-分类查询附件
     * @url {ctx}/api/web/fileInfo/listFileByCat
     * @param mainId 所属业务主体编号
@@ -217,5 +245,45 @@
        }
    }
    /**
     * 删除附件
     * @url {ctx}/api/web/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();
        }
    }
    /**
     * 根据多个所属编号查询附件并根据先根据ownerId再根据附件类型分组
     * @url {ctx}/api/web/fileInfo/listIdTypeInfo
     * @return Object
     */
    @PostMapping("/listIdTypeInfo")
    public Object listIdTypeInfo(@RequestBody IdFileDTO idFileDTO) {
        try {
            Map<String, Object> term = new HashMap<>();
            String ownerIds = idFileDTO.getOwnerIdList().stream().map(String:: valueOf).collect(Collectors.joining("','"));
            String types = idFileDTO.getTypeList().stream().map(String:: valueOf).collect(Collectors.joining("','"));
            if(StringUtils.isNotBlank(ownerIds)){
                ownerIds = "'" + ownerIds + "'";
            }
            if(StringUtils.isNotBlank(types)){
                types = "'" + types + "'";
            }
            term.put("ownerIds", ownerIds);
            term.put("types", types);
            term.put("mainId", idFileDTO.getMainId());
            return ReturnSucUtils.getRepInfo(service.listIdTypeInfoByOwnerIdList(term));
        } catch (Exception e) {
            return ReturnFailUtils.getRepInfo();
        }
    }
}