sinake
6 小时以前 861e646c1b91faa7a2dcb9fd2aac380e29772713
发票管理功能
已修改6个文件
59 ■■■■■ 文件已修改
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecomporganController.java 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonorchargeorgan.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonorchargeorganVO.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceInvoice.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceInvoiceServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDonatecomporganController.java
@@ -158,6 +158,7 @@
            sd.setDel_flag(0);
            ServiceDonorchargeorgan serviceDonorchargeorgan = DtoConversionUtils.sourceToTarget(serviceDonatecompletion, ServiceDonorchargeorgan.class);
            serviceDonorchargeorgan.setReceiveTime(serviceDonatecompletion.getTransplanttime());
            serviceDonorchargeorgan.setOrganState(serviceDonatecompletion.getTransplantstate()+"");
            List<ServiceDonatecomporgan> serviceDonatecomporgans = serviceDonatecomporganService.queryList(sd);
            if (serviceDonatecompletion.getId() == null && CollectionUtils.isEmpty(serviceDonatecomporgans)) {
                i = serviceDonatecomporganService.save(serviceDonatecompletion);
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceInvoiceController.java
@@ -20,6 +20,8 @@
import com.ruoyi.web.controller.tool.HttpUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -126,7 +128,7 @@
        String base64= Base64.getEncoder().encodeToString( Files.readAllBytes(filePath));
        AjaxResult ajax = AjaxResult.success();
        ajax.put("OCRList", aliOCR(base64,0,0));
        ajax.put("OCRList", aliOCR(base64,"0","0"));
        return ajax;
    }
@@ -134,7 +136,7 @@
     * 通用上传请求
     */
    @PostMapping("/uploadOCR")
    public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") long userId, @RequestParam("caseId") long caseId) throws Exception {
    public AjaxResult uploadOCR(@RequestParam("file") MultipartFile file, @RequestParam("userId") String userId, @RequestParam("caseId") String caseId) throws Exception {
        try {
            // 上传文件路径
@@ -166,32 +168,44 @@
            String url = url1 + fileName;
            String base64= Base64.getEncoder().encodeToString(file.getBytes());
            List<Map<String,Object>> lists=aliOCR(base64,userId,caseId);
            List<ServiceInvoice> invoiceList=new ArrayList<>();
            for(Map<String,Object> row : lists){
                ServiceInvoice invoice=new ServiceInvoice();
                invoice.setUserId(userId);
                invoice.setCaseId(caseId);
                invoice.setInvoiceType(row.get("type")+"");
                if(ObjectUtils.isNotEmpty(userId)) {
                    invoice.setUserId(Long.parseLong(userId));
                }
                if(ObjectUtils.isNotEmpty(caseId)) {
                    invoice.setCaseId(Long.parseLong(caseId));
                }
                invoice.setInvoiceType(row.get("发票分类")+"");
                invoice.setInvoiceNo(row.get("发票号码")+"");
                invoice.setOccurDate(row.get("开票日期")+"");
                invoice.setInvoiceAmount(row.get("发票金额")+"");
                invoice.setInvoiceAmount(row.get("金额")+"");
                invoice.setSellerName(row.get("受票方名称")+"");
                invoice.setInvoiceUrl(url);
                invoice.setInvoiceName(newFilename);
                String invoiceName=newFilename.isEmpty() ? filename : newFilename;
                invoice.setInvoiceName(invoiceName.split(".")[0]);
                invoice.setExtContent(JSON.toJSONString(row));
                invoice.setCreateBy(userId);
                invoice.setCreateTime(DateUtils.getNowDate());
                invoice.setUpdateBy(userId);
                invoice.setUpdateTime(DateUtils.getNowDate());
                serviceInvoiceService.save(invoice);
                invoiceList.add(invoice);
            }
            AjaxResult ajax = AjaxResult.success();
            ajax.put("fileName", fileName);
            ajax.put("url", url);
            ajax.put("OCRList", lists);
            ajax.put("invoiceList", invoiceList);
            return ajax;
        } catch (Exception e) {
            return AjaxResult.error(e.getMessage());
        }
    }
    public List<Map<String,Object>> aliOCR(String base64,long userId,long caseId) {
    public List<Map<String,Object>> aliOCR(String base64,String userId,String caseId) {
        String host = "https://mixedmulti.market.alicloudapi.com";
        String path = "/ocrservice/mixedMultiInvoice";
        String method = "POST";
@@ -214,18 +228,18 @@
                Map<String,Object> tempList=new HashMap<>();
                JSONObject rowObject=(JSONObject)row;
                tempList.put("发票分类",rowObject.getString("type"));
                JSONObject result=((JSONObject)rowObject.get("result")).getJSONObject("data");
                for(Map.Entry<String, Object> entry : result.entrySet()){
                    tempList.put(entry.getKey(),entry.getValue());
                }
                if(rowObject.getString("type").equals("银行承兑汇票")){
                if(rowObject.getString("发票分类").equals("银行承兑汇票")){
                    BigDecimal totalAmount= ChineseUtils.chineseToNumber(result.getString("票据金额大写"));
                    tempList.put("发票金额",totalAmount);
                    tempList.put("金额",totalAmount);
                }
                if(rowObject.getString("type").equals("火车票")){
                    tempList.put("发票金额",result.getString("票价"));
                if(rowObject.getString("发票分类").equals("火车票")){
                    tempList.put("金额",result.getString("票价"));
                }
                lists.add(tempList);
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonorchargeorgan.java
@@ -218,8 +218,8 @@
    /**
     * 器官状态
     */
    @ApiModelProperty("器管状态:1移植、2失功、3库存、4已移植、5弃用、6直系免除、7不良事件")
    @Excel(name = "器管状态:1移植、2失功、3库存、4已移植、5弃用、6直系免除、7不良事件")
    @ApiModelProperty("器管状态:1移植、2弃用、3库存、4失功、5直系免除、6不良事件")
    @Excel(name = "器管状态:1移植、2弃用、3库存、4失功、5直系免除、6不良事件")
    private String organState;
    /**
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceDonorchargeorganVO.java
@@ -191,8 +191,8 @@
    /**
     * 器官状态
     */
    @ApiModelProperty("器管状态:1移植、2失功、3库存、4已移植、5弃用、6直系免除、7不良事件")
    @Excel(name = "器管状态:1移植、2失功、3库存、4已移植、5弃用、6直系免除、7不良事件")
    @ApiModelProperty("器管状态:1移植、2弃用、3库存、4失功、5直系免除、6不良事件")
    @Excel(name = "器管状态:1移植、2弃用、3库存、4失功、5直系免除、6不良事件")
    private String organState;
    /**
ruoyi-project/src/main/java/com/ruoyi/project/domain/ServiceInvoice.java
@@ -112,6 +112,13 @@
    private String invoiceUrl;
    /**
     * 发票报销状态:0未报销 1已报销
     */
    @ApiModelProperty("发票报销状态:0未报销 1已报销")
    @Excel(name = "发票报销状态", readConverterExp = "0=未报销,1=已报销")
    private String reimburseState;
    /**
     * 扩展内容(json存)
     */
    @ApiModelProperty("扩展内容(json存)")
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceInvoiceServiceImpl.java
@@ -65,6 +65,9 @@
        if (StringUtils.isNotBlank(serviceInvoice.getRemark())) {
            wrappers.like(ServiceInvoice::getRemark, serviceInvoice.getRemark());
        }
        if (StringUtils.isNotBlank(serviceInvoice.getReimburseState())) {
            wrappers.eq(ServiceInvoice::getReimburseState, serviceInvoice.getReimburseState());
        }
        wrappers.orderByDesc(ServiceInvoice::getCreateTime).orderByDesc(ServiceInvoice::getId);
        return this.list(wrappers);
    }