liusheng
2023-10-26 dcd3eb3bbbc25b01155493f20f5680fc6d4aee11
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -19,6 +19,7 @@
import com.ruoyi.project.service.IServiceReimbursementdetailSharedService;
import com.ruoyi.project.service.IServiceReimbursementpayeeSharedService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -117,12 +118,14 @@
    @Override
    public List<ServiceReimbursementdetailVO> getRBDetailList(Long id) {
        log.info("getRBDetailList的入参:{}", id);
        List<ServiceReimbursementdetailVO> serviceReimbursementdetailVOS = new ArrayList<>();
        List<ServiceReimbursementdetail> rbDetailList = serviceReimbursementdetailMapper.getRBDetailList(id);
        log.info("getRBDetailList的入参:{}", CollectionUtils.isEmpty(rbDetailList) ? null : rbDetailList.size());
        for (int j = 0; j < rbDetailList.size(); j++) {
            ServiceReimbursementdetail serviceReimbursementdetail = rbDetailList.get(j);
            String annexfiles = serviceReimbursementdetail.getAnnexfiles();
            String invoicefiles = serviceReimbursementdetail.getInvoicefiles();
            ServiceReimbursementdetailVO serviceReimbursementdetailVO = DtoConversionUtils.sourceToTarget(serviceReimbursementdetail, ServiceReimbursementdetailVO.class);
            if (StringUtils.isNotBlank(annexfiles)) {
                try {
@@ -130,6 +133,14 @@
                } catch (Exception e) {
                    if (e.getMessage().equals("invalid comment")) {
                        log.error("报异常了,老大不让我处理");
                    }
                }
            }
            if (StringUtils.isNotBlank(invoicefiles)) {
                try {
                    serviceReimbursementdetailVO.setInvoicefilesList(JSON.parseArray(invoicefiles));
                } catch (Exception e) {
                    if (e.getMessage().equals("invalid comment")) {
                    }
                }
            }
@@ -147,10 +158,10 @@
        columnMap.put("rbid", id);
        //获取详情数据
        List<ServiceReimbursementdetail> details = serviceReimbursementdetailMapper.selectByMap(columnMap);
        log.info("serviceReimbursementdetailMapper.selectByMap方法的返参参 :{}", details.size());
        log.info("serviceReimbursementdetailMapper.selectByMap方法的返参参 :{}", CollectionUtils.isEmpty(details) ? null : details.size());
        //获取支付数据
        List<ServiceReimbursementpayee> serviceReimbursementpayees = reimbursementpayeeMapper.selectByMap(columnMap);
        log.info("reimbursementpayeeMapper.selectByMap方法的返参参 :{}", serviceReimbursementpayees.size());
        log.info("reimbursementpayeeMapper.selectByMap方法的返参参 :{}", CollectionUtils.isEmpty(serviceReimbursementpayees) ? null : serviceReimbursementpayees.size());
        //数据组装
        ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class);
        serviceReimbursementShared.setReimid(id);
@@ -171,7 +182,14 @@
            uploadOAFileAndUpdateDb(serviceReimbursementdetailShareds.get(i));
        }
        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
//        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
        for (ServiceReimbursementdetailShared serviceReimbursementdetailShared : serviceReimbursementdetailShareds) {
            if (ObjectUtils.isNotEmpty(serviceReimbursementdetailShared)) {
                detailSharedService.save(serviceReimbursementdetailShared);
            } else {
                log.info("serviceReimbursementdetailShared为空了");
            }
        }
        //将serviceReimbursementpayee表里的id赋值给Rpid; 将serviceReimbursementShared里的ID赋值给RBID,并将serviceReimbursementpayeeShared表里的id置空,由数据库重新生成
        for (int i = 0; i < serviceReimbursementpayees.size(); i++) {
@@ -179,8 +197,14 @@
            serviceReimbursementpayeeShareds.get(i).setRbid(serviceReimbursementShared.getId());
            serviceReimbursementpayeeShareds.get(i).setId(null);
        }
        payeeSharedService.saveBatch(serviceReimbursementpayeeShareds);
        for (ServiceReimbursementpayeeShared serviceReimbursementpayeeShared : serviceReimbursementpayeeShareds) {
            if (ObjectUtils.isNotEmpty(serviceReimbursementpayeeShared)) {
                payeeSharedService.save(serviceReimbursementpayeeShared);
            } else {
                log.info("serviceReimbursementpayeeShared为空了!");
            }
        }
        return true;
    }
@@ -190,8 +214,8 @@
    }
    @Override
    public List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE) {
        return serviceReimbursementMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE);
    public List<SpFinancialExpensesReimbursementOut> getListBypower(String PAUSERNO, Integer PAFUNDTYPE, String PAAPPLICANT, String PAAPPLICATIONBEGTIME, String PAAPPLICATIONENDTIME, String PADEPARTMENT, Integer CHECKFLAG, Integer APPLYTYPE, Integer CHECKSTATUS,String donorname) {
        return serviceReimbursementMapper.getListBypower(PAUSERNO, PAFUNDTYPE, PAAPPLICANT, PAAPPLICATIONBEGTIME, PAAPPLICATIONENDTIME, PADEPARTMENT, CHECKFLAG, APPLYTYPE, CHECKSTATUS,donorname);
    }
    @Override
@@ -231,41 +255,69 @@
        JSONObject json1 = JSONObject.parseObject(strRes);
        strRes = json1.get("id").toString();
        log.info("strRes的值 : {}", strRes);
        String filePath = RuoYiConfig.getUploadPath();
        String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
        List<RbDetailFile> parseArray2 = new ArrayList<>();
        List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class);
        for (int i = 0; i < parseArray.size(); i++) {
            RbDetailFile rbDetailFile = parseArray.get(i);
            log.info("filePath的修改:{}", filePath);
            String strFile = rbDetailFile.getUrl().replaceAll("/profile/upload", filePath);
            File filetest = new File(strFile);
            try {
                log.info("请求第三方的入参strFile : {}, strFUrl : {}", strFile, filePath);
                String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
                log.info("第三方传回的数据: {}", struploadResult);
                if (StringUtils.isEmpty(struploadResult)) {
                    log.info("HttpClientKit.sendPostWithFile 请求为空了 filetest:{},  strFUrl:{} ", filetest, strFUrl);
                    return 0;
                }
        List<RbDetailFile> invoicefilesList = new ArrayList<>();
                //获取fileid
                JSONObject jsonR = JSONObject.parseObject(struploadResult);
                JSONArray jsonArr = jsonR.getJSONArray("atts");
                log.info("第三方传回的数据获取的atts : {}", jsonArr);
                for (int j = 0; j < jsonArr.size(); j++) {
                    JSONObject jsonRet = jsonArr.getJSONObject(j);
                    rbDetailFile.setFileid(jsonRet.get("fileUrl").toString());
        //普通文件上传
        List<RbDetailFile> parseArray = JSON.parseArray(remShare.getAnnexfiles(), RbDetailFile.class);
        //发票文件上传
        List<RbDetailFile> invoicefilesArray = JSON.parseArray(remShare.getInvoicefiles(), RbDetailFile.class);
        //普通附件
        uploadFile(filePath, strFUrl, parseArray2, parseArray, remShare, "1");
        //发票附件
        uploadFile(filePath, strFUrl, invoicefilesList, invoicefilesArray, remShare, "2");
        return 0;
    }
    private Integer uploadFile(String filePath, String strFUrl, List<RbDetailFile> parseArray2, List<RbDetailFile> parseArray, ServiceReimbursementdetailShared remShare, String flag) {
        if (!CollectionUtils.isEmpty(parseArray)) {
            for (int i = 0; i < parseArray.size(); i++) {
                RbDetailFile rbDetailFile = parseArray.get(i);
                log.info("filePath的修改:{}", filePath);
                String url = rbDetailFile.getUrl();
                //file用的是绝对位置
                String substring = url.substring(url.indexOf("/profile/upload") + "/profile/upload".length());
                String strFile = rbDetailFile.getUrl().replace(filePath, "/profile/upload");
                System.out.println("reimbursement服务的filePath + substring是乱码吗: " + filePath + substring);
                File filetest = new File(filePath + substring);
                try {
                    log.info("请求第三方的入参strFile : {}, strFUrl : {}", strFile, filePath);
                    String struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
                    log.info("第三方传回的数据: {}", struploadResult);
                    if (StringUtils.isEmpty(struploadResult)) {
                        log.info("HttpClientKit.sendPostWithFile 请求为空了 filetest:{},  strFUrl:{} ", filetest, strFUrl);
                        return 0;
                    }
                    //获取fileid
                    JSONObject jsonR = JSONObject.parseObject(struploadResult);
                    JSONArray jsonArr = jsonR.getJSONArray("atts");
                    log.info("第三方传回的数据获取的atts : {}", jsonArr);
                    for (int j = 0; j < jsonArr.size(); j++) {
                        JSONObject jsonRet = jsonArr.getJSONObject(j);
                        rbDetailFile.setFileid(jsonRet.get("fileUrl").toString());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    log.error("HttpClientKit.sendPostWithFile 报错了 : " + e.getMessage());
                }
            } catch (Exception e) {
                e.printStackTrace();
                log.error("HttpClientKit.sendPostWithFile 报错了 : " + e.getMessage());
                parseArray2.add(rbDetailFile);
            }
            parseArray2.add(rbDetailFile);
        }
        remShare.setAnnexfiles(JSON.toJSONString(parseArray2));
        if (flag.equals("1")) {
            //如果flag为1,则是普通
            remShare.setAnnexfiles(JSON.toJSONString(parseArray2));
        } else if (flag.equals("2")) {
            //如果flag为2,则是发票
            remShare.setInvoicefiles(JSON.toJSONString(parseArray2));
        }
        log.info("ServiceReimbursementdetailShared 是否加上了fileid : {}", remShare);
        return 0;
    }