liusheng
2023-09-14 fa8521a23af37854e7a23d35467147bd00e008b2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceReimbursementController.java
@@ -31,6 +31,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.*;
@@ -100,6 +101,7 @@
    public TableDataInfo list(ServiceReimbursement serviceReimbursement) {
        SysUser user = SecurityUtils.getLoginUser().getUser();
        serviceReimbursement.setCreateBy(user.getUserName());
        serviceReimbursement.setUsername(user.getNickName());
        startPage();
        List<ServiceReimbursement> list = serviceReimbursementService.queryList(serviceReimbursement);
        return getDataTable(list);
@@ -154,6 +156,15 @@
        }
        //startPage();
        List<SpFinancialExpensesReimbursementOut> list = serviceReimbursementService.getListBypower(loginUser.getUsername(), 1, APPLICANT, APPLICATIONBEGTIME, APPLICATIONENDTIME, loginUser.getDeptId().toString(), CHECKFLAG, APPLYTYPE);
        //根据经办人筛选
        if (StringUtils.isNotBlank(spFinancialExpensesIn.getUsername())) {
            list = list.stream().filter(reimbursementOut -> reimbursementOut.getUsername().contains(spFinancialExpensesIn.getUsername())).collect(Collectors.toList()); // 按name字段过滤
        }
        //根据金额筛选
        if (spFinancialExpensesIn.getMoney() != null) {
            list = list.stream().filter(reimbursementOut -> new BigDecimal(reimbursementOut.getAmountrequested()) == new BigDecimal(spFinancialExpensesIn.getMoney())).collect(Collectors.toList());
        }
        //根据创建时间排序
        Collections.sort(list, new Comparator<SpFinancialExpensesReimbursementOut>() {
            @Override
            public int compare(SpFinancialExpensesReimbursementOut o1, SpFinancialExpensesReimbursementOut o2) {
@@ -450,20 +461,17 @@
        ServiceReimbursement serviceReimbursement = serviceReimbursementService.getById(checkFundVO.getFundid());
        //如果等于100,说明已经走到医院财务那边了;财务那边取数据是从分享表取,所以,这里直接往分享表里添加数据就行了;
        if (!Objects.isNull(serviceReimbursement) && serviceReimbursement.getBackflowlevel() != null) {
            if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) {
                //将修改的上报数据 新增一条
                ServiceReimbursementShared serviceReimbursementShared = DtoConversionUtils.sourceToTarget(serviceReimbursement, ServiceReimbursementShared.class);
                serviceReimbursementShared.setId(null);
                serviceReimbursementShared.setDelFlag(0L);
                serviceReimbursementShared.setReimid(serviceReimbursement.getId());
                serviceReimbursementSharedService.save(serviceReimbursementShared);
//            if (serviceReimbursement.getBackflowlevel() == 100 || serviceReimbursement.getBackflowlevel() == 199) {
            if (serviceReimbursement.getBackflowlevel() == 199) {
                //将退回阶段设置成100
                serviceReimbursement.setBackflowlevel(100L);
                serviceReimbursement.setFlowlevel(100L);
                serviceReimbursement.setRecordstatus(0);
                serviceReimbursementService.updateById(serviceReimbursement);
                //将修改的上报数据 新增一条
                serviceReimbursementService.addSharedData(checkFundVO.getFundid());
                return success();
            }
        }
@@ -594,7 +602,11 @@
            serviceFundflow.setFundtype(1);
            serviceFundflow.setApplytype("0");
            serviceFundflow.setFlowconclusion(CheckFlag);
            serviceFundflow.setFlowcontent(checkFundVO.getFlowcontent());
            if (StringUtils.isNotBlank(checkFundVO.getFlowcontent())) {
                serviceFundflow.setFlowcontent(checkFundVO.getFlowcontent());
            } else {
                serviceFundflow.setFlowcontent(checkFundVO.getFlowconclusion() == 1 ? "通过" : "不通过");
            }
            serviceFundflow.setFlowlevel(OriginalFlowLevel + 1);
            serviceFundflowService.save(serviceFundflow);
@@ -615,6 +627,10 @@
                    serviceReimbursement.setRecordstatus(1);
                }
            }
            //001审批通过之后,就需要把“办公室主任”的名字填上
            if (checkFundVO.getFlowconclusion() == 1 && user.getUserId().equals("001")) {
                serviceReimbursement.setOfficedirector(user.getNickName());
            }
            serviceReimbursementService.updateById(serviceReimbursement);
@@ -689,8 +705,8 @@
     */
    @ApiOperation("删除报销申请")
    //@PreAuthorize("@ss.hasPermi('project:reimbursement:remove')")
    @Log(title = "报销申请", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    @Log(title = "报销申请")
    @GetMapping("/remove/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids) {
        return toAjax(serviceReimbursementService.removeByIds(Arrays.asList(ids)));
    }
@@ -704,6 +720,7 @@
        Map dataMap = new HashMap();
        getData(dataMap, id);
        String filePath = getClass().getResource("/template/").getPath();
        log.info("下载地址是啥???{}", filePath);
        System.out.println(filePath);
        //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载,
        configuration.setDirectoryForTemplateLoading(new File(filePath));
@@ -716,7 +733,7 @@
            e.printStackTrace();
        }
        String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis());
        String name = "差旅费报销申请单_" + dataMap.get("XM") + "_" + newTime;
        String name = "差旅费报销申请单_" + dataMap.get("JSR") + "_" + newTime;
        //输出文档路径及名称
        File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc");
@@ -759,9 +776,15 @@
        ServiceReimbursementEo serviceReimbursementEo = new ServiceReimbursementEo();
        serviceReimbursementEo.setId(id);
        List<ServiceReimbursementEo> rdInfoByItem = serviceReimbursementService.getRDInfoByItem(serviceReimbursementEo);
        log.info("rdInfoByItem是否为空 :{}", CollectionUtils.isEmpty(rdInfoByItem) ? null : rdInfoByItem.size());
        for (int i = 0; i < rdInfoByItem.size(); i++) {
            ServiceReimbursementEo serviceReimbursementEo1 = rdInfoByItem.get(i);
            String codeByInfo = PersonType.getCodeByInfo(serviceReimbursementEo1.getPersontype());
            serviceReimbursementEo1.setPersontype(codeByInfo);
        }
        //获取报销支付信息
        List<ServiceReimbursementpayee> reimbursementpayeeInfo = reimbursementpayeeService.getReimbursementpayeeInfo(serviceReimbursementEo);
        log.info("reimbursementpayeeInfo是否为空 :{}", CollectionUtils.isEmpty(reimbursementpayeeInfo) ? null : reimbursementpayeeInfo.size());
        Map<String, List<ServiceReimbursementEo>> listMap = rdInfoByItem.stream().collect(Collectors.groupingBy(ServiceReimbursementEo::getPersontype));
        List<Map<String, BigDecimal>> list = new ArrayList<>();
        StringBuffer FYXM1 = new StringBuffer();
@@ -778,7 +801,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.getCityfee()).add(serviceReimbursementEo1.getFoodexpenses()).add(serviceReimbursementEo1.getFoodallowance()).add(serviceReimbursementEo1.getOtherexpense()).add(serviceReimbursementEo1.getOtherfeeamount());
            }
            map.put(key, otherMoney);
            list.add(map);
@@ -877,6 +900,7 @@
        String date = formatter.format(dt);
        String time = date.substring(0, 10);
        dataMap.put("XZBH", rdInfoByItem.get(0).getBh() == null ? "" : rdInfoByItem.get(0).getBh());
        dataMap.put("TBYYMMDD", time);
        dataMap.put("BXDFJ", rdInfoByItem.get(0).getAttachcount() == null ? "   " : "" + rdInfoByItem.get(0).getAttachcount());
        dataMap.put("JXZXM", rdInfoByItem.get(0).getDonorname() == null ? "" : rdInfoByItem.get(0).getDonorname());
@@ -913,6 +937,14 @@
        }
        dataMap.put("BXBZ", remark);
        dataMap.put("ZXFZR", StringUtils.isEmpty(rdInfoByItem.get(0).getOpochecker()) ? "" : rdInfoByItem.get(0).getOpochecker());
//
        dataMap.put("CWFYZ", StringUtils.isEmpty(rdInfoByItem.get(0).getFinvicepresident()) ? "" : rdInfoByItem.get(0).getFinvicepresident());
        dataMap.put("YWFYZ", StringUtils.isEmpty(rdInfoByItem.get(0).getBusvicepresident()) ? "" : rdInfoByItem.get(0).getBusvicepresident());
        dataMap.put("BGSZR", StringUtils.isEmpty(rdInfoByItem.get(0).getOfficedirector()) ? "" : rdInfoByItem.get(0).getOfficedirector());
        dataMap.put("CWBZR", StringUtils.isEmpty(rdInfoByItem.get(0).getFinancedirector()) ? "" : rdInfoByItem.get(0).getFinancedirector());
        dataMap.put("CWSH", StringUtils.isEmpty(rdInfoByItem.get(0).getFinancechecher()) ? "" : rdInfoByItem.get(0).getFinancechecher());
        dataMap.put("YYMMDD", time);