liusheng
2023-05-18 0b92f536b0b302e479ca0307008666866091b492
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -32,6 +32,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.ibatis.annotations.Options;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.io.*;
@@ -151,6 +152,12 @@
        }
        //startPage();
        List<SpFinancialExpensesReimbursementOut> list = serviceReimbursementService.getListBypower(loginUser.getUsername(), 1, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE);
        Collections.sort(list, new Comparator<SpFinancialExpensesReimbursementOut>() {
            @Override
            public int compare(SpFinancialExpensesReimbursementOut o1, SpFinancialExpensesReimbursementOut o2) {
                return o2.getCreateTime().compareTo(o1.getCreateTime());
            }
        });
        return getCustomDataTable(list, pageNum, pageSize);
    }
@@ -188,17 +195,6 @@
    }
    /**
     * 往service_reimbursement_share,往service_reimbursementdetail_share,往service_reimbursementpyee_share新增备份数据
     * @param id
     * @return
     */
    @GetMapping("/addShareData/{id}")
    public AjaxResult addSharedData(@PathVariable("id") Long id) {
        return AjaxResult.success(serviceReimbursementService.addSharedData(id));
    }
    /**
     * 新增报销申请
     */
    @ApiOperation("新增报销申请")
@@ -217,107 +213,106 @@
        return AjaxResult.success(id);
    }
    public int addReiSharedDatd(ServiceReimbursement serviceReimbursement, int nType) {
        //remShare = ;
        ServiceReimbursementShared remShare = null;
        if (nType == 1) {
            remShare = new ServiceReimbursementShared();
            remShare.setReimid(serviceReimbursement.getId());
        } else //modify
        {
            List<ServiceReimbursementShared> remlist = serviceReimbursementServiceShare.getRemShareInfoByRemId(serviceReimbursement.getId());
            if (remlist != null)
                remShare = remlist.get(0);
        }
        remShare.setUserno(serviceReimbursement.getUserno());
        remShare.setUsername(serviceReimbursement.getUsername());
        remShare.setTravelers(serviceReimbursement.getTravelers());
        remShare.setIdcardtype(serviceReimbursement.getIdcardtype());
        remShare.setIdcardno(serviceReimbursement.getIdcardno());
        remShare.setPhone(serviceReimbursement.getPhone());
        remShare.setDepositbank(serviceReimbursement.getDepositbank());
        remShare.setBankcardno(serviceReimbursement.getBankcardno());
        remShare.setBranchbankname(serviceReimbursement.getBranchbankname());
        remShare.setAnnexbankcard(serviceReimbursement.getAnnexbankcard());
        remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested()));
        Double nTemp = serviceReimbursement.getAmountrequested();
        if (nTemp == null) nTemp = 0d;
        remShare.setAmountrequested(BigDecimal.valueOf(nTemp));
        nTemp = serviceReimbursement.getPrepaidamount();
        if (nTemp == null) nTemp = 0.0;
        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp));
        remShare.setInvoicecount(serviceReimbursement.getInvoicecount());
        remShare.setAttachcount(serviceReimbursement.getAttachcount());
        remShare.setManagerno(serviceReimbursement.getManagerno());
        remShare.setManagername(serviceReimbursement.getManagername());
        remShare.setDeptmentno(serviceReimbursement.getDeptmentno());
        remShare.setDeptmentname(serviceReimbursement.getDeptmentname());
        remShare.setOpochecker(serviceReimbursement.getOpochecker());
        remShare.setFinvicepresident(serviceReimbursement.getFinvicepresident());
        remShare.setBusvicepresident(serviceReimbursement.getBusvicepresident());
        remShare.setOfficedirector(serviceReimbursement.getOfficedirector());
        remShare.setFinancedirector(serviceReimbursement.getFinancedirector());
        remShare.setFinancechecher(serviceReimbursement.getFinancechecher());
        remShare.setInfoid(serviceReimbursement.getInfoid());
        remShare.setDonorno(serviceReimbursement.getDonorno());
        remShare.setDonorname(serviceReimbursement.getDonorname());
        remShare.setReason(serviceReimbursement.getReason());
        remShare.setRecordstatus(serviceReimbursement.getRecordstatus());
        remShare.setUploadflag(serviceReimbursement.getUploadflag());
        remShare.setUploadtime(serviceReimbursement.getUploadtime());
        nTemp = serviceReimbursement.getTotalamount();
        if (nTemp == null) nTemp = 0.0;
        remShare.setTotalamount(BigDecimal.valueOf(nTemp));
        remShare.setBigstrmoney(serviceReimbursement.getBigstrmoney());
        remShare.setFlowlevel(serviceReimbursement.getFlowlevel());
        remShare.setCosttype(serviceReimbursement.getCosttype());
        remShare.setCosttypename(serviceReimbursement.getCosttypename());
        remShare.setFileurl(serviceReimbursement.getAnnexfiles());
        remShare.setDonorbank(serviceReimbursement.getDonorbank());
        remShare.setDonorbankcard(serviceReimbursement.getDonorbankcard());
        remShare.setDonorremark(serviceReimbursement.getDonorremark());
        nTemp = serviceReimbursement.getDonoramount();
        if (nTemp == null) nTemp = 0.0;
        remShare.setDonoramount(nTemp);
        remShare.setDonorrelatives(serviceReimbursement.getDonorrelatives());
        //remShare.setOaid(serviceReimbursement.getOaid());
        //remShare.setDonorno(serviceReimbursement.getDonorno());
        boolean bRet = false;
        if (nType == 1) {
            bRet = serviceReimbursementServiceShare.save(remShare);
        } else {
            //remShare.setId(serviceReimbursement.);
            bRet = serviceReimbursementServiceShare.updateById(remShare);
        }
        //if(!bRet) return -1;
        String strMutfileUrl = remShare.getFileurl();
        //有附件时才调用第三方进行上传
        if (strMutfileUrl == null) return 0;
        if (strMutfileUrl.isEmpty()) return 0;
        try {
            uploadOAFileAndUpdateDb(remShare);
        } catch (Exception e) {
            logger.error("调用第三方接口出错!");
            e.printStackTrace();
        }
        //此处保存成功后要上传OA,保存返回值
        return 0;
    }
//    public int addReiSharedDatd(ServiceReimbursement serviceReimbursement, int nType) {
//        //remShare = ;
//        ServiceReimbursementShared remShare = new ServiceReimbursementShared();
//        if (nType == 1) {
//            // remShare = new ServiceReimbursementShared();
//            remShare.setReimid(serviceReimbursement.getId());
//        } else //modify
//        {
//            List<ServiceReimbursementShared> remlist = serviceReimbursementServiceShare.getRemShareInfoByRemId(serviceReimbursement.getId());
//            if (!CollectionUtils.isEmpty(remlist)) remShare = remlist.get(0);
//        }
//
//        remShare.setUserno(serviceReimbursement.getUserno());
//        remShare.setUsername(serviceReimbursement.getUsername());
//        remShare.setTravelers(serviceReimbursement.getTravelers());
//        remShare.setIdcardtype(serviceReimbursement.getIdcardtype());
//        remShare.setIdcardno(serviceReimbursement.getIdcardno());
//        remShare.setPhone(serviceReimbursement.getPhone());
//        remShare.setDepositbank(serviceReimbursement.getDepositbank());
//        remShare.setBankcardno(serviceReimbursement.getBankcardno());
//        remShare.setBranchbankname(serviceReimbursement.getBranchbankname());
//        remShare.setAnnexbankcard(serviceReimbursement.getAnnexbankcard());
//        remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
//        //remShare.setAnnexfiles(serviceReimbursement.getAnnexfiles());
//        // remShare.setAmountrequested(BigDecimal.valueOf(serviceReimbursement.getAmountrequested()));
//
//        Double nTemp = serviceReimbursement.getAmountrequested();
//        if (nTemp == null) nTemp = 0d;
//        remShare.setAmountrequested(BigDecimal.valueOf(nTemp));
//
//        nTemp = serviceReimbursement.getPrepaidamount();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setPrepaidamount(BigDecimal.valueOf(nTemp));
//
//        remShare.setInvoicecount(serviceReimbursement.getInvoicecount());
//        remShare.setAttachcount(serviceReimbursement.getAttachcount());
//        remShare.setManagerno(serviceReimbursement.getManagerno());
//        remShare.setManagername(serviceReimbursement.getManagername());
//        remShare.setDeptmentno(serviceReimbursement.getDeptmentno());
//        remShare.setDeptmentname(serviceReimbursement.getDeptmentname());
//        remShare.setOpochecker(serviceReimbursement.getOpochecker());
//        remShare.setFinvicepresident(serviceReimbursement.getFinvicepresident());
//        remShare.setBusvicepresident(serviceReimbursement.getBusvicepresident());
//        remShare.setOfficedirector(serviceReimbursement.getOfficedirector());
//        remShare.setFinancedirector(serviceReimbursement.getFinancedirector());
//        remShare.setFinancechecher(serviceReimbursement.getFinancechecher());
//        remShare.setInfoid(serviceReimbursement.getInfoid());
//        remShare.setDonorno(serviceReimbursement.getDonorno());
//
//        remShare.setDonorname(serviceReimbursement.getDonorname());
//        remShare.setReason(serviceReimbursement.getReason());
//        remShare.setRecordstatus(serviceReimbursement.getRecordstatus());
//        remShare.setUploadflag(serviceReimbursement.getUploadflag());
//        remShare.setUploadtime(serviceReimbursement.getUploadtime());
//
//        nTemp = serviceReimbursement.getTotalamount();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setTotalamount(BigDecimal.valueOf(nTemp));
//
//        remShare.setBigstrmoney(serviceReimbursement.getBigstrmoney());
//        remShare.setFlowlevel(serviceReimbursement.getFlowlevel());
//        remShare.setCosttype(serviceReimbursement.getCosttype());
//        remShare.setCosttypename(serviceReimbursement.getCosttypename());
//        remShare.setFileurl(serviceReimbursement.getAnnexfiles());
//        remShare.setDonorbank(serviceReimbursement.getDonorbank());
//        remShare.setDonorbankcard(serviceReimbursement.getDonorbankcard());
//        remShare.setDonorremark(serviceReimbursement.getDonorremark());
//
//        nTemp = serviceReimbursement.getDonoramount();
//        if (nTemp == null) nTemp = 0.0;
//        remShare.setDonoramount(nTemp);
//        remShare.setDonorrelatives(serviceReimbursement.getDonorrelatives());
//        //remShare.setOaid(serviceReimbursement.getOaid());
//        //remShare.setDonorno(serviceReimbursement.getDonorno());
//
//        boolean bRet = false;
//        if (nType == 1) {
//            bRet = serviceReimbursementServiceShare.save(remShare);
//        } else {
//            //remShare.setId(serviceReimbursement.);
//            bRet = serviceReimbursementServiceShare.updateById(remShare);
//        }
//
//        //if(!bRet) return -1;
//        String strMutfileUrl = remShare.getFileurl();
//        //有附件时才调用第三方进行上传
//        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(ServiceReimbursementShared remShare) {
@@ -432,12 +427,12 @@
        }
        long nId = remShare.getId();
        remShare.setId(nId);
        remShare.setFilename(filename);
        remShare.setFileid(fileid);
        boolean bRet = serviceReimbursementServiceShare.updateById(remShare);
        if (!bRet) return -1;
//        long nId = remShare.getId();
//        remShare.setId(nId);
//        remShare.setFilename(filename);
//        remShare.setFileid(fileid);
//        boolean bRet = serviceReimbursementServiceShare.updateById(remShare);
//        if (!bRet) return -1;
        return 0;
    }
@@ -495,7 +490,7 @@
    public AjaxResult checkFund(@RequestBody CheckFundVO checkFundVO) {
        ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
        if (serviceReimbursement != null) {
            Integer TotalLevel = 0;
            Integer totalLevel = 0;
            LoginUser loginUser = getLoginUser();
            ServiceFundflowrule serviceFundflowrule = new ServiceFundflowrule();
            serviceFundflowrule.setFundtype(1);
@@ -512,7 +507,9 @@
            }
            if (serviceFundflowrules != null && serviceFundflowrules.stream().count() > 0) {
                TotalLevel = serviceFundflowrules.get(0).getTotallevel();
                totalLevel = serviceFundflowrules.get(0).getTotallevel();
            }
            Integer CheckFlag = 0;
            Integer RecordStatus = serviceReimbursement.getRecordstatus();
@@ -520,10 +517,11 @@
            Integer OriginalFlowLevel = FlowLevel;
            if (checkFundVO.getFlowconclusion() == 1) {
                CheckFlag = 1;
                if (TotalLevel == 0) {
                if (totalLevel == 0) {
                    //99 取消
                    RecordStatus = 99;
                } else {
                    if (TotalLevel == FlowLevel + 1) {
                    if (totalLevel == FlowLevel + 1) {
                        RecordStatus = 99;
                    } else {
                        RecordStatus = (FlowLevel + 1) * 2;
@@ -589,7 +587,10 @@
                //通过
                serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核通过");
                serviceSystemmessage.setMessagecontent("您" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(serviceReimbursement.getCreateTime()) + "提交的关于捐献案例【" + serviceReimbursement.getDonorname() + "】的差旅费申请已通过" + (OriginalFlowLevel + 1) + "级审核");
                if (totalLevel == OriginalFlowLevel + 1) {
                    //所有数据新增到备份表
                    serviceReimbursementService.addSharedData(checkFundVO.getFundid());
                }
            } else {
                //驳回
                serviceSystemmessage.setMessagetitle("" + (OriginalFlowLevel + 1) + "级审核驳回");
@@ -614,9 +615,9 @@
    @RepeatSubmit
    public AjaxResult edit(@RequestBody ServiceReimbursement serviceReimbursement) {
        boolean b = serviceReimbursementService.updateById(serviceReimbursement);
        if (b) {
            addReiSharedDatd(serviceReimbursement, 2);
        }
//        if (b) {
//            addReiSharedDatd(serviceReimbursement, 2);
//        }
        return toAjax(b);
    }
@@ -713,8 +714,7 @@
        //获取报销支付信息
        List<ServiceReimbursementpayee> reimbursementpayeeInfo = reimbursementpayeeService.getReimbursementpayeeInfo(serviceReimbursementEo);
        Map<String, List<ServiceReimbursementEo>> listMap = rdInfoByItem.stream()
                .collect(Collectors.groupingBy(ServiceReimbursementEo::getPersontype));
        Map<String, List<ServiceReimbursementEo>> listMap = rdInfoByItem.stream().collect(Collectors.groupingBy(ServiceReimbursementEo::getPersontype));
        List<Map<String, BigDecimal>> list = new ArrayList<>();
        StringBuffer FYXM1 = new StringBuffer();
        StringBuffer FYXM2 = new StringBuffer();
@@ -730,9 +730,7 @@
            BigDecimal keyOneMoney = new BigDecimal(0.00);
            BigDecimal keyTwoMoney = new BigDecimal(0.00);
            for (ServiceReimbursementEo serviceReimbursementEo1 : values) {
                otherMoney = otherMoney.add(serviceReimbursementEo1.getTrafficexpense()).add(serviceReimbursementEo1.getHotelexpense())
                        .add(serviceReimbursementEo1.getFoodexpenses()).add(serviceReimbursementEo1.getFoodallowance())
                        .add(serviceReimbursementEo1.getOtherexpense()).add(serviceReimbursementEo1.getOtherfeeamount());
                otherMoney = otherMoney.add(serviceReimbursementEo1.getTrafficexpense()).add(serviceReimbursementEo1.getHotelexpense()).add(serviceReimbursementEo1.getFoodexpenses()).add(serviceReimbursementEo1.getFoodallowance()).add(serviceReimbursementEo1.getOtherexpense()).add(serviceReimbursementEo1.getOtherfeeamount());
            }
            map.put(key, otherMoney);
            list.add(map);
@@ -802,17 +800,20 @@
        } else {
            dataMap.put("FYXM3", "");
        }
        //   dataMap.put("JEXS", rdInfoByItem.get(0).getAmountrequested());
        dataMap.put("JEXS", allMoney);
        //double temp = 0;
        //temp = Math.round(serviceReimbursement.getAmountrequested() * 100) * 0.01d;
        // dataMap.put("JEDS", convert(rdInfoByItem.get(0).getAmountrequested().doubleValue()) + "整");
        dataMap.put("JEDS", convert(allMoney.doubleValue()) + "整");
        String remark = "";
        for (ServiceReimbursementpayee serviceReimbursementpayee : reimbursementpayeeInfo) {
            remark += "<w:br/> "+PersonType.getInfoByCode(serviceReimbursementpayee.getPersontype())+ "(" + serviceReimbursementpayee.getPersonname() + " " + serviceReimbursementpayee.getAmount();
            remark += " 元; " + serviceReimbursementpayee.getBankname() + ": " + serviceReimbursementpayee.getBankcardno() + ") 备注: " + serviceReimbursementpayee.getRemark();
            remark += "<w:br/> " + serviceReimbursementpayee.getPersonname() + " " + serviceReimbursementpayee.getAmount();
            remark += " 元; ";
            if (!StringUtils.isEmpty(serviceReimbursementpayee.getBankname())) {
                remark += serviceReimbursementpayee.getBankname() + " ( " + serviceReimbursementpayee.getBankcardno() + ")";
            }
            remark += " 备注: " + serviceReimbursementpayee.getPersontype();
            if (!StringUtils.isEmpty(serviceReimbursementpayee.getRemark())) {
                remark += serviceReimbursementpayee.getRemark();
            }
        }
        dataMap.put("BXBZ", remark);
@@ -857,11 +858,16 @@
            map.put("DA", s.getDeparture() == null ? "" : s.getDeparture());
            Date et = s.getEndtime();
            SimpleDateFormat formatter_et = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String date_et = formatter_et.format(et);
            String year_et = date_et.substring(0, 4);
            String month_et = date_et.substring(5, 7);
            String day_et = date_et.substring(8, 10);
            String year_et = null;
            String month_et = null;
            String day_et = null;
            if (et != null) {
                SimpleDateFormat formatter_et = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String date_et = formatter_et.format(et);
                year_et = date_et.substring(0, 4);
                month_et = date_et.substring(5, 7);
                day_et = date_et.substring(8, 10);
            }
            map.put("AY", year_et == null ? "" : year_et);
            map.put("AM", month_et == null ? "" : month_et);
@@ -1006,9 +1012,7 @@
        }
        result = result.replaceAll("零仟", "零").replaceAll("零佰", "零")        //把单位'亿','万','元'放到最后替换。
                .replaceAll("零拾", "零").replaceAll("零零", "零")
                .replaceAll("零零", "零").replaceAll("零亿", "亿")
                .replaceAll("零万", "万").replaceAll("零元", "元");
                .replaceAll("零拾", "零").replaceAll("零零", "零").replaceAll("零零", "零").replaceAll("零亿", "亿").replaceAll("零万", "万").replaceAll("零元", "元");
        //        result = result.replaceAll("零仟", "零");
        //        result = result.replaceAll("零佰", "零");
        //        result = result.replaceAll("零拾", "零");