liusheng
昨天 8e3a02c1facca35c5a90ce9b49505f373ae658f5
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceReimbursementServiceImpl.java
@@ -17,7 +17,7 @@
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import com.ruoyi.project.common.IdGeneratorUtils;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.dto.ServiceReimbursementDto;
import com.ruoyi.project.domain.vo.CheckFundVO;
@@ -76,6 +76,9 @@
    @Autowired
    IServiceReimbursementpayeeSharedService payeeSharedService;
    @Autowired
    IServiceReimbursementpayeeService payeeService;
    @Autowired
    IServiceFundflowruleService serviceFundflowruleService;
@@ -210,7 +213,17 @@
        List<ServiceReimbursementShared> serviceReimbursementShareds = sharedService.queryList(reimbursementShared1);
        log.info("serviceReimbursementShareds的查询结果 :{}", serviceReimbursementShareds.size());
        if (!CollectionUtils.isEmpty(serviceReimbursementShareds)) {
            return true;
            //如果不为空,则将分享表里的数据删除(因为接下去,老数据上传的附件,可能不是想要的了,还用老附件,是有问题的;所以需要将老的share数据删除,然后再新增,上传新附件)
            for (ServiceReimbursementShared serviceReimbursementShared : serviceReimbursementShareds) {
                sharedService.removeById(serviceReimbursementShared.getId());
                ServiceReimbursementdetailShared srds = new ServiceReimbursementdetailShared();
                srds.setRbid(serviceReimbursementShared.getId());
                List<ServiceReimbursementdetailShared> serviceReimbursementdetailShareds = detailSharedService.queryList(srds);
                for (ServiceReimbursementdetailShared serviceReimbursementdetailShared : serviceReimbursementdetailShareds) {
                    detailSharedService.removeById(serviceReimbursementdetailShared.getId());
                }
            }
        }
        //如果没有插入,则走下面的流程
@@ -234,7 +247,7 @@
//        //上传OA文件
        //将serviceReimbursementdetail表里的id赋值给Rdid; 将serviceReimbursementShared里的ID赋值给RBID,并将serviceReimbursementdetailShared表里的id置空,由数据库重新生成
        for (int i = 0; i < details.size(); i++) {
            serviceReimbursementdetailShareds.get(i).setRdid(serviceReimbursementdetailShareds.get(i).getId());
            serviceReimbursementdetailShareds.get(i).setRdid(details.get(i).getId());
            serviceReimbursementdetailShareds.get(i).setRbid(serviceReimbursementShared.getId());
            serviceReimbursementdetailShareds.get(i).setId(null);
            //上传OA文件
@@ -257,7 +270,16 @@
//        detailSharedService.saveBatch(serviceReimbursementdetailShareds);
        for (ServiceReimbursementdetailShared serviceReimbursementdetailShared : serviceReimbursementdetailShareds) {
            if (ObjectUtils.isNotEmpty(serviceReimbursementdetailShared)) {
                log.info("更新serviceReimbursementdetail表里的值为:{}", serviceReimbursementdetailShared);
                detailSharedService.save(serviceReimbursementdetailShared);
                log.info("更新serviceReimbursementdetail表里的附件字段:{},{}", serviceReimbursementdetailShared.getAnnexfiles(), serviceReimbursementdetailShared.getInvoicefiles());
                //更新serviceReimbursementdetail表里的附件字段
                ServiceReimbursementdetail serviceReimbursementdetail = new ServiceReimbursementdetail();
                serviceReimbursementdetail.setId(serviceReimbursementdetailShared.getRdid());
                serviceReimbursementdetail.setAnnexfiles(serviceReimbursementdetailShared.getAnnexfiles());
                serviceReimbursementdetail.setInvoicefiles(serviceReimbursementdetailShared.getInvoicefiles());
                serviceReimbursementdetailMapper.updateById(serviceReimbursementdetail);
            } else {
                log.info("serviceReimbursementdetailShared为空了");
            }
@@ -529,8 +551,8 @@
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return "审批人:" + managerName + " & 审批时间:" + sd.format(new Date()) + " & 审批结果:通过";
        }
        Optional<ServiceFundflow> lastApproval = serviceFundflows.stream().filter(flow -> flow.getCheckusername().contains(managerName)).max(Comparator.comparing(ServiceFundflow::getCreateTime));
        String mn = managerName.trim();
        Optional<ServiceFundflow> lastApproval = serviceFundflows.stream().filter(flow -> flow.getCheckusername().contains(mn)).max(Comparator.comparing(ServiceFundflow::getCreateTime));
        if (lastApproval.isPresent()) {
            ServiceFundflow flow = lastApproval.get();
@@ -551,18 +573,15 @@
        addSharedData(serviceReimbursement.getId());
        List<ServiceReimbursementShared> serviceReimbursementSharedList = sharedService.getRemShareInfoByRemId(serviceReimbursement.getId());
        if (org.springframework.util.CollectionUtils.isEmpty(serviceReimbursementSharedList)) return false;
        log.info("serviceReimbursementSharedList的数据量为:{}", serviceReimbursementSharedList.size());
        //detail详情
        ServiceReimbursementdetailShared serviceReimbursementdetailShared = new ServiceReimbursementdetailShared();
        serviceReimbursementdetailShared.setRbid(serviceReimbursementSharedList.get(0).getId());
        List<ServiceReimbursementdetailShared> serviceReimbursementdetailShareds = detailSharedService.queryList(serviceReimbursementdetailShared);
        List<ServiceReimbursementdetail> serviceReimbursementdetailList = serviceReimbursementdetailMapper.getAllDetailsByRBID(serviceReimbursement.getId());
        //payee详情
        ServiceReimbursementpayeeShared serviceReimbursementpayeeShared = new ServiceReimbursementpayeeShared();
        serviceReimbursementpayeeShared.setRbid(serviceReimbursementSharedList.get(0).getId());
        List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds = payeeSharedService.queryList(serviceReimbursementpayeeShared);
        ServiceReimbursementpayee serviceReimbursementpayee = new ServiceReimbursementpayee();
        serviceReimbursementpayee.setRbid(serviceReimbursement.getId());
        List<ServiceReimbursementpayee> serviceReimbursementpayees = payeeService.queryList(serviceReimbursementpayee);
        // 数据的封装
@@ -573,12 +592,13 @@
        // 主表字段数据
        Map<String, Object> data2 = new HashMap<>();
        data2.put("formmain_1209", formmain_1209(serviceReimbursementSharedList.get(0)));
        ServiceReimbursement sr = serviceReimbursementMapper.selectById(serviceReimbursement.getId());
        data2.put("formmain_1209", formmain_1209(sr));
        // 明细表字段数据,与附件的处理
        Map<String, List<Map<String, Object>>> map1 = formson_1210(serviceReimbursementdetailShareds);
        Map<String, List<Map<String, Object>>> map1 = formson_1210(serviceReimbursementdetailList);
        data2.put("formson_1210", map1.get("formson_1210"));
        data2.put("thirdAttachments", map1.get("annexfilesList"));
        data2.put("formson_1211", formson_1211(serviceReimbursementpayeeShareds));
        data2.put("formson_1211", formson_1211(serviceReimbursementpayees));
        data.put("data", data2);
        //模板编号,由致远方提供,该参数决定发起协同系统中哪个流程
        data.put("templateCode", "cyfbxd_rzhc_ceshi");
@@ -634,44 +654,42 @@
        return true;
    }
    private static final AtomicLong COUNTER = new AtomicLong(System.currentTimeMillis());
    private Map<String, List<Map<String, Object>>> formson_1210(List<ServiceReimbursementdetailShared> serviceReimbursementdetailSharedList) {
    private Map<String, List<Map<String, Object>>> formson_1210(List<ServiceReimbursementdetail> serviceReimbursementdetailList) {
        Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<>();
        List<Map<String, Object>> annexfilesList = new ArrayList<>();
        for (ServiceReimbursementdetailShared reimbursementdetailShared : serviceReimbursementdetailSharedList) {
        for (ServiceReimbursementdetail reimbursementdetail : serviceReimbursementdetailList) {
            Map<String, Object> map = new HashMap<>();
            map.put("交通工具", reimbursementdetailShared.getTraffictype());
            map.put("交通费", reimbursementdetailShared.getTrafficexpense());
            map.put("市内交通", reimbursementdetailShared.getCityfee());
            map.put("住宿费", reimbursementdetailShared.getHotelexpense());
            map.put("杂费", reimbursementdetailShared.getOtherexpense());
            map.put("伙食费报销", reimbursementdetailShared.getFoodexpenses());
            map.put("伙食费补助", reimbursementdetailShared.getFoodallowance());
            map.put("其他费用", reimbursementdetailShared.getOtherfeeamount());
            map.put("其他费用说明", reimbursementdetailShared.getOtherfeedesc());
            map.put("交通工具", reimbursementdetail.getTraffictype());
            map.put("交通费", reimbursementdetail.getTrafficexpense());
            map.put("市内交通", reimbursementdetail.getCityfee());
            map.put("住宿费", reimbursementdetail.getHotelexpense());
            map.put("杂费", reimbursementdetail.getOtherexpense());
            map.put("伙食费报销", reimbursementdetail.getFoodexpenses());
            map.put("伙食费补助", reimbursementdetail.getFoodallowance());
            map.put("其他费用", reimbursementdetail.getOtherfeeamount());
            map.put("其他费用说明", reimbursementdetail.getOtherfeedesc());
            map.put("金额合计", "");
            map.put("出差时间起", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reimbursementdetailShared.getStarttime()));
            map.put("出发地点", reimbursementdetailShared.getDeparture());
            map.put("出差时间止", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reimbursementdetailShared.getEndtime()));
            map.put("出差目的地", reimbursementdetailShared.getDestination());
            map.put("天数", reimbursementdetailShared.getDays());
            BigDecimal total = safe(reimbursementdetailShared.getCityfee()).add(safe(reimbursementdetailShared.getTrafficexpense())).add(safe(reimbursementdetailShared.getHotelexpense())).add(safe(reimbursementdetailShared.getOtherexpense())).add(safe(reimbursementdetailShared.getFoodexpenses())).add(safe(reimbursementdetailShared.getFoodallowance())).add(safe(reimbursementdetailShared.getOtherfeeamount()));
            map.put("出差时间起", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reimbursementdetail.getStarttime()));
            map.put("出发地点", reimbursementdetail.getDeparture());
            map.put("出差时间止", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reimbursementdetail.getEndtime()));
            map.put("出差目的地", reimbursementdetail.getDestination());
            map.put("天数", reimbursementdetail.getDays());
            BigDecimal total = safe(reimbursementdetail.getCityfee()).add(safe(reimbursementdetail.getTrafficexpense())).add(safe(reimbursementdetail.getHotelexpense())).add(safe(reimbursementdetail.getOtherexpense())).add(safe(reimbursementdetail.getFoodexpenses())).add(safe(reimbursementdetail.getFoodallowance())).add(safe(reimbursementdetail.getOtherfeeamount()));
            map.put("实际报销金额", total);
            map.put("财务备注", reimbursementdetailShared.getRemark());
            map.put("id", reimbursementdetailShared.getRdid());
            map.put("出差人", reimbursementdetailShared.getPersonname());
            map.put("财务备注", reimbursementdetail.getRemark());
            map.put("id", reimbursementdetail.getId());
            map.put("出差人", reimbursementdetail.getPersonname());
            map.put("回交通工具", "");
            map.put("人员类别", reimbursementdetailShared.getPersontype());
            map.put("人员类别", reimbursementdetail.getPersontype());
            map.put("住宿费标准", "");
            map.put("住宿费标准合计", reimbursementdetailShared.getHotelexpense());
            Long fpuuid = COUNTER.incrementAndGet();
            map.put("住宿费标准合计", reimbursementdetail.getHotelexpense());
            Long fpuuid = IdGeneratorUtils.nextId();
            map.put("发票附件", fpuuid);
            map.put("票据识别", "");
            map.put("识别人", "");
            map.put("序号1", "");
            Long qtuuid = COUNTER.incrementAndGet();
            Long qtuuid = IdGeneratorUtils.nextId();
            map.put("其他附件", qtuuid);
            map.put("个人票夹用户", "");
            map.put("识别票据", "");
@@ -679,8 +697,8 @@
            list.add(map);
            //附件处理
            String annexfiles = reimbursementdetailShared.getAnnexfiles();
            String invoicefiles = reimbursementdetailShared.getInvoicefiles();
            String annexfiles = reimbursementdetail.getAnnexfiles();
            String invoicefiles = reimbursementdetail.getInvoicefiles();
            int i = 0;
            if (StringUtils.isNotEmpty(annexfiles)) {
@@ -715,18 +733,18 @@
        return val == null ? BigDecimal.ZERO : val;
    }
    private List<Map<String, Object>> formson_1211(List<ServiceReimbursementpayeeShared> serviceReimbursementpayeeShareds) {
    private List<Map<String, Object>> formson_1211(List<ServiceReimbursementpayee> serviceReimbursementpayees) {
        Map<String, List<Map<String, Object>>> allMap = new HashMap<>();
        List<Map<String, Object>> list = new ArrayList<>();
        for (ServiceReimbursementpayeeShared serviceReimbursementpayeeShared : serviceReimbursementpayeeShareds) {
        for (ServiceReimbursementpayee serviceReimbursementpayee : serviceReimbursementpayees) {
            Map<String, Object> map = new HashMap<>();
            map.put("收款人", serviceReimbursementpayeeShared.getPersonname());
            map.put("卡号", serviceReimbursementpayeeShared.getBankcardno());
            map.put("开户银行", serviceReimbursementpayeeShared.getBankname());
            map.put("打款金额", serviceReimbursementpayeeShared.getAmount());
            map.put("人员类别打款", serviceReimbursementpayeeShared.getPersontype());
            map.put("收款人", serviceReimbursementpayee.getPersonname());
            map.put("卡号", serviceReimbursementpayee.getBankcardno());
            map.put("开户银行", serviceReimbursementpayee.getBankname());
            map.put("打款金额", serviceReimbursementpayee.getAmount());
            map.put("人员类别打款", serviceReimbursementpayee.getPersontype());
            map.put("核算项目", "");
            map.put("预算项目", "");
            map.put("借方摘要", "");
@@ -736,49 +754,52 @@
        return list;
    }
    private Map<String, Object> formmain_1209(ServiceReimbursementShared serviceReimbursementShared) {
    private Map<String, Object> formmain_1209(ServiceReimbursement serviceReimbursement) {
        ServiceFundflow serviceFundflow = new ServiceFundflow();
        serviceFundflow.setFundid(serviceReimbursementShared.getReimid());
        serviceFundflow.setFundid(serviceReimbursement.getId());
        serviceFundflow.setFundtype(1);
        List<ServiceFundflow> serviceFundflows = serviceFundflowService.queryList(serviceFundflow);
        Map<String, Object> formmain_1209 = new HashMap<>();
        formmain_1209.put("报销日期", new SimpleDateFormat("yyyy-MM-dd HH:mm").format(serviceReimbursementShared.getApplyTime()));
        formmain_1209.put("报销日期", new SimpleDateFormat("yyyy-MM-dd HH:mm").format(serviceReimbursement.getApplyTime()));
        formmain_1209.put("出差人-作废", "");
        formmain_1209.put("报销人", serviceReimbursementShared.getUsername());
        formmain_1209.put("区域组长", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getManagername()));
        formmain_1209.put("出差事由", serviceReimbursementShared.getReason());
        formmain_1209.put("报销人", serviceReimbursement.getUsername());
        formmain_1209.put("区域组长", serviceReimbursement.getManagername());
        formmain_1209.put("出差事由", serviceReimbursement.getReason());
        formmain_1209.put("天数合计", 0.00);
        formmain_1209.put("交通费合计", serviceReimbursementShared.getTotalamount());
        formmain_1209.put("交通费合计", serviceReimbursement.getTotalamount());
        formmain_1209.put("市内交通合计", 0.00);
        formmain_1209.put("住宿费合计", 0.00);
        formmain_1209.put("杂费合计", 0.00);
        formmain_1209.put("伙食费报销合计", 0.00);
        formmain_1209.put("伙食费补助合计", 0.00);
        formmain_1209.put("其他费用合计", 0.00);
        formmain_1209.put("领款金额大写", serviceReimbursementShared.getBigstrmoney());
        formmain_1209.put("领款金额", serviceReimbursementShared.getAmountrequested());
        formmain_1209.put("领款金额大写", serviceReimbursement.getBigstrmoney());
        formmain_1209.put("领款金额", serviceReimbursement.getAmountrequested());
        formmain_1209.put("财务审批", "");
        formmain_1209.put("财务部负责人审批", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancedirector()));
        formmain_1209.put("办公室主任审批", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getOfficedirector()));
        formmain_1209.put("备注", serviceReimbursementShared.getRemark());
        formmain_1209.put("业务副院长审批", serviceReimbursementShared.getBusvicepresident());
        formmain_1209.put("财务副院长审批", serviceReimbursementShared.getFinvicepresident());
        formmain_1209.put("中心负责人审批", serviceReimbursementShared.getOpochecker());
        formmain_1209.put("财务部负责人审批", getLastApprovalInfo(serviceFundflows, serviceReimbursement.getFinancedirector()));
        if (serviceReimbursement.getBackflowlevel() == 3)
            formmain_1209.put("办公室主任审批", "审批人:周育成 & 审批时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) + " & 审批结果:通过");
        else formmain_1209.put("办公室主任审批", getLastApprovalInfo(serviceFundflows, "周育成"));
        formmain_1209.put("备注", serviceReimbursement.getRemark());
        formmain_1209.put("业务副院长审批", serviceReimbursement.getBusvicepresident());
        formmain_1209.put("财务副院长审批", serviceReimbursement.getFinvicepresident());
        formmain_1209.put("中心负责人审批", serviceReimbursement.getOpochecker());
        formmain_1209.put("开户银行-作废", "");
        formmain_1209.put("卡号-作废", "");
        formmain_1209.put("支付方式", serviceReimbursementShared.getZffs());
        formmain_1209.put("组长", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getManagername()));
        formmain_1209.put("审批人员", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancechecher()));
        formmain_1209.put("支付日期", serviceReimbursementShared.getRiqi());
        formmain_1209.put("支付方式", serviceReimbursement.getZffs());
        formmain_1209.put("组长", getLastApprovalInfo(serviceFundflows, serviceReimbursement.getManagername()));
        formmain_1209.put("审批人员", getLastApprovalInfo(serviceFundflows, "陈慕华"));
        formmain_1209.put("支付日期", serviceReimbursement.getRiqi());
        formmain_1209.put("上传附件", "");
        formmain_1209.put("打款合计", 0.00);
        formmain_1209.put("发票识别-作废", "");
        formmain_1209.put("识别人-作废", "");
        formmain_1209.put("财务审批签字", "");
        formmain_1209.put("财务部负责人审批签字", getLastApprovalInfo(serviceFundflows, serviceReimbursementShared.getFinancedirector()));
        formmain_1209.put("财务部负责人审批签字", getLastApprovalInfo(serviceFundflows, serviceReimbursement.getFinancedirector()));
        formmain_1209.put("表单编号1", "");
        formmain_1209.put("CIF账套配置1", "");
        formmain_1209.put("院区", "");
@@ -792,13 +813,13 @@
        formmain_1209.put("表单附件", "");
        formmain_1209.put("10204", "");
        formmain_1209.put("现金流量分析", "");
        formmain_1209.put("捐献者", serviceReimbursementShared.getDonorname());
        formmain_1209.put("捐献者", serviceReimbursement.getDonorname());
        formmain_1209.put("凭证类别", "");
        formmain_1209.put("合计", 0.00);
        formmain_1209.put("实际合计", 0.00);
        formmain_1209.put("伙食补助合计", 0.00);
        formmain_1209.put("历史审批记录", "");
        formmain_1209.put("表单编号", serviceReimbursementShared.getReimid());
        formmain_1209.put("表单编号", serviceReimbursement.getId());
        formmain_1209.put("历史审批巨鹿查询", "");
        return formmain_1209;
    }
@@ -806,7 +827,6 @@
    public int uploadOAFileAndUpdateDb(ServiceReimbursementdetailShared remShare) throws Exception {
        log.info("uploadOAFileAndUpdate方法的入参:{}", remShare);
        System.out.println("uploadOAFileAndUpdate方法的入参:" + remShare);
        //上传OA文件
        String strRes = getToken();