liusheng
2023-07-26 0028d554cb0dcae4d5250dac3d0f2a1e5d2f2da2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFundController.java
@@ -1,7 +1,5 @@
package com.ruoyi.web.controller.project;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.config.RuoYiConfig;
@@ -13,7 +11,6 @@
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.*;
@@ -33,6 +30,7 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
import static com.ruoyi.web.controller.project.ServiceReimbursementController.convert;
@@ -138,7 +136,12 @@
        //startPage();
        List<SpFinancialExpensesFundOut> list = serviceFundService.getListBypower(loginUser.getUsername(), 2, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE);
        //return getDataTable(list);
        Collections.sort(list, new Comparator<SpFinancialExpensesFundOut>() {
            @Override
            public int compare(SpFinancialExpensesFundOut o1, SpFinancialExpensesFundOut o2) {
                return o2.getCreateTime().compareTo(o1.getCreateTime());
            }
        });
        return getCustomDataTable(list, pageNum, pageSize);
    }
@@ -201,222 +204,222 @@
    public AjaxResult add(@RequestBody ServiceFund serviceFund) {
        boolean b = serviceFundService.save(serviceFund);
        Long id = serviceFund.getId();
        if (b) {
            addReiSharedDatd(serviceFund, 1);
        }
//        if (b) {
//            addReiSharedDatd(serviceFund, 1);
//        }
        return AjaxResult.success(id);
    }
    public int addReiSharedDatd(ServiceFund serviceFund, int nType) {
        //remShare = ;
        ServiceFundShared remShare = null;
        if (nType == 1) {
            remShare = new ServiceFundShared();
            remShare.setSerfunid(serviceFund.getId());
        } else //modify
        {
            List<ServiceFundShared> remlist = fundServiceShare.getFundShareInfoById(serviceFund.getId());
            if (remlist != null) remShare = remlist.get(0);
        }
        remShare.setDonorno(serviceFund.getDonorno());
        remShare.setDonorname(serviceFund.getDonorname());
        remShare.setUserno(serviceFund.getUserno());
        remShare.setUsername(serviceFund.getUsername());
        remShare.setUnitname(serviceFund.getUnitname());
        remShare.setUnitno(serviceFund.getUnitno());
        remShare.setUnituserno(serviceFund.getUnituserno());
        remShare.setPhone(serviceFund.getPhone());
        remShare.setAnnexbankcard(serviceFund.getAnnexbankcard());
        remShare.setAnnexregistform(serviceFund.getAnnexregistform());
        Double nTemp = serviceFund.getPretaxcost();
        if (nTemp == null) nTemp = 0d;
        remShare.setPretaxcost(BigDecimal.valueOf(nTemp));
        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested()));
        nTemp = serviceFund.getTaxedcost();
        if (nTemp == null) nTemp = 0d;
        remShare.setTaxedcost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getTotalcost();
        if (nTemp == null) nTemp = 0d;
        remShare.setTotalcost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getExpertcost();
        if (nTemp == null) nTemp = 0.0;
        remShare.setExpertcost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getEthicscost();
        if (nTemp == null) nTemp = 0.0;
        remShare.setEthicscost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getMedicalcost();
        if (nTemp == null) nTemp = 0.0;
        remShare.setMedicalcost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getFamilycost();
        if (nTemp == null) nTemp = 0.0;
        remShare.setFamilycost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getAftercarecost();
        if (nTemp == null) nTemp = 0.0;
        remShare.setAftercarecost(BigDecimal.valueOf(nTemp));
        nTemp = serviceFund.getAmountrequested();
        if (nTemp == null) nTemp = 0.0;
        remShare.setAmountrequested(BigDecimal.valueOf(nTemp));
//    public int addReiSharedDatd(ServiceFund serviceFund, int nType) {
//        //remShare = ;
//        ServiceFundShared remShare = null;
//        if (nType == 1) {
//            remShare = new ServiceFundShared();
//            remShare.setSerfunid(serviceFund.getId());
//        } else //modify
//        {
//            List<ServiceFundShared> remlist = fundServiceShare.getFundShareInfoById(serviceFund.getId());
//            if (remlist != null) remShare = remlist.get(0);
//        }
//
//        remShare.setDonorno(serviceFund.getDonorno());
//        remShare.setDonorname(serviceFund.getDonorname());
//        remShare.setUserno(serviceFund.getUserno());
//        remShare.setUsername(serviceFund.getUsername());
//        remShare.setUnitname(serviceFund.getUnitname());
//        remShare.setUnitno(serviceFund.getUnitno());
//        remShare.setUnituserno(serviceFund.getUnituserno());
//        remShare.setPhone(serviceFund.getPhone());
//        remShare.setAnnexbankcard(serviceFund.getAnnexbankcard());
//        remShare.setAnnexregistform(serviceFund.getAnnexregistform());
//        Double nTemp = serviceFund.getPretaxcost();
//        if (nTemp == null) nTemp = 0d;
//        remShare.setPretaxcost(BigDecimal.valueOf(nTemp));
//        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
//        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested()));
//
//        nTemp = serviceFund.getTaxedcost();
//        if (nTemp == null) nTemp = 0d;
//        remShare.setTaxedcost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getTotalcost();
//        if (nTemp == null) nTemp = 0d;
//        remShare.setTotalcost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getExpertcost();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setExpertcost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getEthicscost();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setEthicscost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getMedicalcost();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setMedicalcost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getFamilycost();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setFamilycost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getAftercarecost();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setAftercarecost(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceFund.getAmountrequested();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setAmountrequested(BigDecimal.valueOf(nTemp));
//
//
//        remShare.setApplytype(serviceFund.getApplytype());
//
//        nTemp = serviceFund.getPrepaidamount();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp));
//
//        remShare.setInvoicecount(serviceFund.getInvoicecount());
//        remShare.setAttachcount(serviceFund.getAttachcount());
//        remShare.setManagerno(serviceFund.getManagerno());
//        remShare.setManagername(serviceFund.getManagername());
//        remShare.setDeptmentno(serviceFund.getDeptmentno());
//        remShare.setDeptmentname(serviceFund.getDeptmentname());
//        remShare.setOpochecker(serviceFund.getOpochecker());
//        remShare.setFinvicepresident(serviceFund.getFinvicepresident());
//        remShare.setBusvicepresident(serviceFund.getBusvicepresident());
//        remShare.setOfficedirector(serviceFund.getOfficedirector());
//        remShare.setFinancedirector(serviceFund.getFinancedirector());
//        remShare.setFinancechecher(serviceFund.getFinancechecher());
//        //remShare.setIsdistribute(serviceFund.getIsdistribute());
//        remShare.setRecordstatus(serviceFund.getRecordstatus());
//        remShare.setUploadflag(serviceFund.getUploadflag());
//        remShare.setUploadtime(serviceFund.getUploadtime());
//        long nLevel = serviceFund.getFlowlevel();
//        remShare.setFlowlevel(nLevel);
//
//        remShare.setInfoid(serviceFund.getInfoid());
//
//        //remShare.setOaid(serviceReimbursement.getOaid());
//        //remShare.setDonorno(serviceReimbursement.getDonorno());
//
//        boolean bRet = false;
//        if (nType == 1) {
//            bRet = fundServiceShare.save(remShare);
//        } else {
//            //remShare.setId(serviceReimbursement.);
//            bRet = fundServiceShare.updateById(remShare);
//        }
//
//        //if(!bRet) return -1;
//        String strMutfileUrl = remShare.getAnnexbankcard();
//        //有附件时才调用第三方进行上传
//        if (strMutfileUrl == null) return 0;
//        if (strMutfileUrl.isEmpty()) return 0;
//
//        try {
//            uploadOAFileAndUpdateDb(remShare);
//        } catch (Exception e) {
//            logger.error("调用第三方接口出错!");
//            e.printStackTrace();
//        }
//
//        //此处保存成功后要上传OA,保存返回值
//
//        return 0;
//    }
        remShare.setApplytype(serviceFund.getApplytype());
        nTemp = serviceFund.getPrepaidamount();
        if (nTemp == null) nTemp = 0.0;
        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp));
        remShare.setInvoicecount(serviceFund.getInvoicecount());
        remShare.setAttachcount(serviceFund.getAttachcount());
        remShare.setManagerno(serviceFund.getManagerno());
        remShare.setManagername(serviceFund.getManagername());
        remShare.setDeptmentno(serviceFund.getDeptmentno());
        remShare.setDeptmentname(serviceFund.getDeptmentname());
        remShare.setOpochecker(serviceFund.getOpochecker());
        remShare.setFinvicepresident(serviceFund.getFinvicepresident());
        remShare.setBusvicepresident(serviceFund.getBusvicepresident());
        remShare.setOfficedirector(serviceFund.getOfficedirector());
        remShare.setFinancedirector(serviceFund.getFinancedirector());
        remShare.setFinancechecher(serviceFund.getFinancechecher());
        //remShare.setIsdistribute(serviceFund.getIsdistribute());
        remShare.setRecordstatus(serviceFund.getRecordstatus());
        remShare.setUploadflag(serviceFund.getUploadflag());
        remShare.setUploadtime(serviceFund.getUploadtime());
        long nLevel = serviceFund.getFlowlevel();
        remShare.setFlowlevel(nLevel);
        remShare.setInfoid(serviceFund.getInfoid());
        //remShare.setOaid(serviceReimbursement.getOaid());
        //remShare.setDonorno(serviceReimbursement.getDonorno());
        boolean bRet = false;
        if (nType == 1) {
            bRet = fundServiceShare.save(remShare);
        } else {
            //remShare.setId(serviceReimbursement.);
            bRet = fundServiceShare.updateById(remShare);
        }
        //if(!bRet) return -1;
        String strMutfileUrl = remShare.getAnnexbankcard();
        //有附件时才调用第三方进行上传
        if (strMutfileUrl == null) return 0;
        if (strMutfileUrl.isEmpty()) return 0;
        try {
            uploadOAFileAndUpdateDb(remShare);
        } catch (Exception e) {
            logger.error("调用第三方接口出错!");
            e.printStackTrace();
        }
        //此处保存成功后要上传OA,保存返回值
        return 0;
    }
    int uploadOAFileAndUpdateDb(ServiceFundShared remShare) {
        //上传OA文件
        //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";
        String strUrl = "http://129.88.242.39:8899/seeyon/rest/token";
        //String strUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/token";
        //上传文件成功后,去更新相关的数据库
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("userName", "opo");
        map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5");
        map.put("loginName", "demo3");
        JSONObject jsonObj = new JSONObject(map);
        System.out.println("uploadOAFileAndUpdateDb + jsonObject" + jsonObj.toString() + "\r\n" + jsonObj.toJSONString());
        String strRes = HttpClientKit.postOpr(strUrl, jsonObj.toString());//
        //String strRes = HttpClientKit.postMsg(strUrl,jsonObj);//得到返回的token?
        JSONObject json1 = JSONObject.parseObject(strRes);
        strRes = json1.get("id").toString();
        ///if(strRes.isEmpty() || "" == strRes) return -1;// 为空代表失败
        //下面需求调用文件的接口,调用成功返回后,得到filename和fileid 用这二个值去更新数据
        String filePath = RuoYiConfig.getUploadPath();
        String strMutfileUrl = remShare.getAnnexbankcard();//可能存在多个地址,以,分开
        String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
        //String strFUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/attachment?token="+strRes;
        //strFUrl = String.format(strFUrl, strRes);
        /*File test = null;
        File file = new File("E:\\YYJQ\\OPO\\WEB\\Upload\\upload\\2023\\02\\17");
        if (file.exists() && file.isDirectory()) {
            // 获取所有盲盒文件夹
            File[] ones = file.listFiles();
            for (File one : ones) {
                test = one;
            }
        }*/
        String filename = "";
        String fileid = "";
        String[] urlArray = strMutfileUrl.split(",");
        for (int i = 0; i < urlArray.length; i++) {
            String strOneFileName = urlArray[i];
            String strTemp = strOneFileName.substring(15);
            String strFile = filePath + strTemp;
            //FileUploadUtils.getAbsoluteFile(filePath,strOneFileName);
            String struploadResult = "";
            File filetest = new File(strFile);
            try {
                struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
            } catch (Exception e) {
                e.printStackTrace();
            }
            //String strFRes = HttpClientKit.postMsg(strFUrl,jsonFObj);
            if (struploadResult == null) return 0;
            if (struploadResult.isEmpty()) return 0;
            JSONObject jsonR = JSONObject.parseObject(struploadResult);
            JSONArray jsonArr = jsonR.getJSONArray("atts");
            for (int j = 0; j < jsonArr.size(); j++) {
                JSONObject jsonRet = jsonArr.getJSONObject(j);
                String name1 = jsonRet.get("filename").toString();
                String id1 = jsonRet.get("fileUrl").toString();
                filename += name1;
                fileid += id1;
                if (i != urlArray.length - 1) {
                    filename += ",";
                    fileid += ",";
                }
            }
        }
        long nId = remShare.getId();
        remShare.setId(nId);
        remShare.setFilename(filename);
        remShare.setFileid(fileid);
        boolean bRet = fundServiceShare.updateById(remShare);
        if (!bRet) return -1;
        return 0;
    }
//    int uploadOAFileAndUpdateDb(ServiceFundShared remShare) {
//        //上传OA文件
//        //String strUrl = "http://129.88.242.39:8899/seeyon/rest/token?userName=opo&password=127814f8-84e8-4304-84a5-a71573567efd&loginName=demo3";
//        String strUrl = "http://129.88.242.39:8899/seeyon/rest/token";
//        //String strUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/token";
//        //上传文件成功后,去更新相关的数据库
//
//
//        Map<String, Object> map = new HashMap<String, Object>();
//        map.put("userName", "opo");
//        map.put("password", "4126407a-9821-4874-be41-6568abd6dbe5");
//        map.put("loginName", "demo3");
//
//        JSONObject jsonObj = new JSONObject(map);
//
//        System.out.println("uploadOAFileAndUpdateDb + jsonObject" + jsonObj.toString() + "\r\n" + jsonObj.toJSONString());
//        String strRes = HttpClientKit.postOpr(strUrl, jsonObj.toString());//
//        //String strRes = HttpClientKit.postMsg(strUrl,jsonObj);//得到返回的token?
//
//        JSONObject json1 = JSONObject.parseObject(strRes);
//        strRes = json1.get("id").toString();
//
//        ///if(strRes.isEmpty() || "" == strRes) return -1;// 为空代表失败
//
//        //下面需求调用文件的接口,调用成功返回后,得到filename和fileid 用这二个值去更新数据
//
//        String filePath = RuoYiConfig.getUploadPath();
//        String strMutfileUrl = remShare.getAnnexbankcard();//可能存在多个地址,以,分开
//
//        String strFUrl = "http://129.88.242.39:8899/seeyon/rest/attachment?token=" + strRes;
//        //String strFUrl = "http://slb.hospitalstar.com:8899/seeyon/rest/attachment?token="+strRes;
//        //strFUrl = String.format(strFUrl, strRes);
//
//        /*File test = null;
//        File file = new File("E:\\YYJQ\\OPO\\WEB\\Upload\\upload\\2023\\02\\17");
//        if (file.exists() && file.isDirectory()) {
//            // 获取所有盲盒文件夹
//            File[] ones = file.listFiles();
//            for (File one : ones) {
//                test = one;
//            }
//        }*/
//
//        String filename = "";
//        String fileid = "";
//
//        String[] urlArray = strMutfileUrl.split(",");
//        for (int i = 0; i < urlArray.length; i++) {
//            String strOneFileName = urlArray[i];
//            String strTemp = strOneFileName.substring(15);
//            String strFile = filePath + strTemp;
//            //FileUploadUtils.getAbsoluteFile(filePath,strOneFileName);
//            String struploadResult = "";
//            File filetest = new File(strFile);
//            try {
//                struploadResult = HttpClientKit.sendPostWithFile(filetest, strFUrl);
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
//
//
//            //String strFRes = HttpClientKit.postMsg(strFUrl,jsonFObj);
//            if (struploadResult == null) return 0;
//            if (struploadResult.isEmpty()) return 0;
//
//            JSONObject jsonR = JSONObject.parseObject(struploadResult);
//
//            JSONArray jsonArr = jsonR.getJSONArray("atts");
//            for (int j = 0; j < jsonArr.size(); j++) {
//                JSONObject jsonRet = jsonArr.getJSONObject(j);
//                String name1 = jsonRet.get("filename").toString();
//                String id1 = jsonRet.get("fileUrl").toString();
//                filename += name1;
//                fileid += id1;
//                if (i != urlArray.length - 1) {
//                    filename += ",";
//                    fileid += ",";
//                }
//            }
//
//        }
//
//        long nId = remShare.getId();
//        remShare.setId(nId);
//        remShare.setFilename(filename);
//        remShare.setFileid(fileid);
//        boolean bRet = fundServiceShare.updateById(remShare);
//        if (!bRet) return -1;
//
//        return 0;
//    }
    /**
     * 新增费用汇总
@@ -429,9 +432,9 @@
    public AjaxResult addnew(@RequestBody ServiceFundVO serviceFundVO) {
        boolean b = serviceFundService.save(serviceFundVO);
        Long id = serviceFundVO.getId();
        if (b) {
            addReiSharedDatd(serviceFundVO, 1);
        }
//        if (b) {
//            addReiSharedDatd(serviceFundVO, 1);
//        }
        List<ServiceFunddetail> serviceFunddetails = serviceFundVO.getServiceFunddetails();
        serviceFunddetails.forEach(item -> item.setFundid(id));
        serviceFunddetailService.saveBatch(serviceFunddetails);
@@ -445,6 +448,7 @@
    @Log(title = "审核费用", businessType = BusinessType.OTHER)
    @PostMapping("/checkfund")
    public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) {
        logger.info("serviceFundController---checkFund的入参值checkFundVO :{}", checkFundVO);
        ServiceFund serviceFund = serviceFundService.getById(checkFundVO.getFundid());
        if (serviceFund != null) {
            Integer TotalLevel = 0;
@@ -453,6 +457,8 @@
            serviceFundflowrule.setFundtype(2);
            serviceFundflowrule.setApplytype(serviceFund.getApplytype());
            serviceFundflowrule.setCheckuserno(loginUser.getUsername());
            logger.info("serviceFundController---checkFund---queryList的入参值serviceFundflowrule:{}", serviceFundflowrule);
            List<ServiceFundflowrule> serviceFundflowrules = serviceFundflowruleService.queryList(serviceFundflowrule);
            if (serviceFundflowrules == null || serviceFundflowrules.stream().count() == 0) {
@@ -485,10 +491,15 @@
                FlowLevel = FlowLevel + 1;
            } else {
                CheckFlag = 2;
                RecordStatus = (FlowLevel + 1) * 2 - 1;
                FlowLevel = (FlowLevel - 1);
                if (FlowLevel < 0) {
                if (CheckFlag == 2) {
                    //应医院要求如果出现退回,直接退到发起者
                    FlowLevel = 0;
                } else {
                    RecordStatus = (FlowLevel + 1) * 2 - 1;
                    FlowLevel = (FlowLevel - 1);
                    if (FlowLevel < 0) {
                        FlowLevel = 0;
                    }
                }
            }
@@ -526,6 +537,7 @@
                if (TotalLevel == OriginalFlowLevel + 1) {
                    ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class);
                    serviceFundShared.setId(null);
                    serviceFundShared.setSerfunid(serviceFund.getId());
                    serviceFundShared.setAmountrequested(new BigDecimal(serviceFund.getAmountrequested()));
                    serviceFundShared.setPrepaidamount(new BigDecimal(serviceFund.getPrepaidamount()));
                    serviceFundShared.setTotalcost(new BigDecimal(serviceFund.getTotalcost()));
@@ -541,15 +553,18 @@
                    columnMap.put("fundID", checkFundVO.getFundid());
                    //获取详情数据
                    List<ServiceFunddetail> serviceFunddetails = serviceFunddetailMapper.selectByMap(columnMap);
                    logger.info("serviceFundController---checkFund的返回值serviceFunddetails :{}", serviceFunddetails);
                    List<ServiceFunddetailShared> serviceFunddetailShareds = DtoConversionUtils.sourceToTarget(serviceFunddetails, ServiceFunddetailShared.class);
                    for (int i = 0; i < serviceFunddetails.size(); i++) {
                        serviceFunddetailShareds.get(i).setFundid(serviceFunddetails.get(i).getFundid());
                        serviceFunddetailShareds.get(i).setFundid(serviceFundShared.getId());
                        serviceFunddetailShareds.get(i).setFdid(serviceFunddetails.get(i).getId());
                        serviceFunddetailShareds.get(i).setAmount(new BigDecimal(serviceFunddetails.get(i).getAmount()));
                        serviceFunddetailShareds.get(i).setPrepaidamount(new BigDecimal(serviceFunddetails.get(i).getPrepaidamount()));
                        serviceFunddetailShareds.get(i).setTaxamount(new BigDecimal(serviceFunddetails.get(i).getTaxamount()));
                        serviceFunddetailShareds.get(i).setTaxedamount(new BigDecimal(serviceFunddetails.get(i).getTaxedamount()));
                        serviceFunddetailShareds.get(i).setQuantity(new BigDecimal(serviceFunddetails.get(i).getQuantity()));
                        serviceFunddetailShareds.get(i).setPrice(new BigDecimal(serviceFunddetails.get(i).getPrice()));
                        serviceFunddetailShareds.get(i).setId(null);
                    }
                    funddetailSharedService.saveBatch(serviceFunddetailShareds);
@@ -577,11 +592,30 @@
    @PutMapping
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceFund serviceFund) {
        boolean bret = serviceFundService.updateById(serviceFund);
        if (bret) {
            addReiSharedDatd(serviceFund, 2);
        List<ServiceFund> infoByInfoIdList = serviceFundService.getInfoByInfoId(serviceFund.getId());
        for (ServiceFund sf : infoByInfoIdList) {
            //如果等于100,说明已经走到医院财务那边了;财务那边取数据是从分享表取,所以,这里直接往分享表里添加数据就行了
            if (sf.getBackflowlevel() == 100 || sf.getBackflowlevel() == 199) {
                ServiceFundShared serviceFundShared = DtoConversionUtils.sourceToTarget(serviceFund, ServiceFundShared.class);
                serviceFundShared.setId(null);
                serviceFundShared.setDel_flag(0);
                fundSharedService.save(serviceFundShared);
                //将fund表的审核状态改成100
                sf.setBackflowlevel(100);
                serviceFundService.updateById(sf);
                return success();
            } else {
                serviceFund.setFlowlevel(sf.getBackflowlevel());
                boolean bret = serviceFundService.updateById(serviceFund);
//        if (bret) {
//            addReiSharedDatd(serviceFund, 2);
//        }
                return toAjax(bret);
            }
        }
        return toAjax(bret);
        return toAjax(false);
    }
    /**
@@ -611,7 +645,7 @@
        Template t = null;
        try {
            //捐献表.ftl为要装载的模板
            t = configuration.getTemplate("专家劳务费发放申请单.ftl");
            t = configuration.getTemplate("专家劳务费发放申请单(1).ftl");
        } catch (IOException e) {
            e.printStackTrace();
        }
@@ -652,7 +686,8 @@
        dataMap.put("BXDFJ", serviceFund.getAttachcount() == 0 ? "   " : serviceFund.getAttachcount());
        dataMap.put("JXZXM", serviceFund.getDonorname() == null ? "" : serviceFund.getDonorname());
        dataMap.put("JSR", serviceFund.getUsername() == null ? "" : serviceFund.getUsername());
        dataMap.put("FYXM1", "支付专家费用,其中税前金额" + serviceFund.getPretaxcost() + "元,税后金额" + serviceFund.getTaxedcost() + "元。");
//        dataMap.put("FYXM1", "支付专家费用,其中税前金额" + serviceFund.getPretaxcost() + "元,税后金额" + serviceFund.getTaxedcost() + "元。");
        dataMap.put("FYXM1", "人体器官捐献专家劳务费:" + serviceFund.getTaxedcost() + "元 (其中税后费用由中心承担税费)。");
        dataMap.put("FYXM2", "");
        dataMap.put("FYXM3", "");
        dataMap.put("JEXS", serviceFund.getAmountrequested());
@@ -678,6 +713,7 @@
        for (ServiceFunddetail f : fd) {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("XH", f.getItemcode() == null ? "" : f.getItemcode());
            String itemName = f.getItemname() == null ? "" : f.getItemname();
            String servicesscopename = f.getServicesscopename() == null ? "" : "(" + f.getServicesscopename() + ")";
@@ -699,12 +735,55 @@
            newsList.add(map);
        }
        //  专家劳务费统计表
        List<Map<String, Object>> lists = new ArrayList<Map<String, Object>>();
        List<Double> sqljList = new ArrayList<>();
        List<Double> ksljList = new ArrayList<>();
        List<Double> shljList = new ArrayList<>();
        Map<String, Optional<ServiceFunddetailAssort>> result = fd.stream().collect(Collectors.groupingBy(ServiceFunddetail::getSubjecttypename, Collectors.mapping(obj -> new ServiceFunddetailAssort(obj.getAmount(), obj.getTaxamount(), obj.getTaxedamount()), Collectors.reducing(ServiceFunddetailAssort::add))));
        result.forEach((FWFL, serviceFunddetailAssort) -> {
            Map<String, Object> map1 = new HashMap<String, Object>();
            map1.put("FWFL", FWFL);
            map1.put("SQXJ", serviceFunddetailAssort.get().getSQXJ());
            map1.put("KSXJ", serviceFunddetailAssort.get().getKSXJ());
            map1.put("SHXJ", serviceFunddetailAssort.get().getSHXJ());
            sqljList.add(serviceFunddetailAssort.get().getSQXJ());
            ksljList.add(serviceFunddetailAssort.get().getKSXJ());
            shljList.add(serviceFunddetailAssort.get().getSHXJ());
            lists.add(map1);
        });
        double sqxj = 0;
        double kslj = 0;
        double shlj = 0;
        for (Double sqx : sqljList) {
            sqxj += sqx;
        }
        for (Double ksl : ksljList) {
            kslj += ksl;
        }
        for (Double shl : shljList) {
            shlj += shl;
        }
        //数据封装
        dataMap.put("list", newsList);
        for (int i = 0; i < lists.size(); i++) {
            Map<String, Object> map = lists.get(i);
            map.put("XH", i+1);
        }
        dataMap.put("item", lists);
        dataMap.put("SQHJ", sq);
        dataMap.put("KSHJ", ks);
        dataMap.put("SHHJ", sh);
        dataMap.put("SQLJ", sqxj);
        dataMap.put("KSLJ", kslj);
        dataMap.put("SHLJ", shlj);
    }