liusheng
2024-03-28 9023758237ed16471a02a43982e52d797ebac80d
ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ServiceFundServiceImpl.java
@@ -1,40 +1,41 @@
package com.ruoyi.project.service.impl;
import java.io.File;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.NotRepeatCommit;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.ChineseUtils;
import com.ruoyi.common.utils.HttpClientKit;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.DtoConversionUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.project.domain.*;
import com.ruoyi.project.domain.vo.*;
import com.ruoyi.project.mapper.*;
import com.ruoyi.project.service.IServiceFundSharedService;
import com.ruoyi.project.service.IServiceFunddetailService;
import com.ruoyi.project.service.IServiceFunddetailSharedService;
import com.ruoyi.project.service.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.ibatis.annotations.Param;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.service.IServiceFundService;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 费用申请主Service业务层处理
@@ -72,6 +73,12 @@
    @Autowired
    private IServiceFunddetailService serviceFunddetailService;
    @Autowired
    private VExpertfeeExpertMapper vExpertfeeExpertMapper;
    @Autowired
    private VExpertfeeTotalMapper vExpertfeeTotalMapper;
    /**
     * 查询费用申请主列表(包含删除的)
@@ -87,6 +94,9 @@
        }
        if (serviceFund.getId() != null) {
            wrappers.eq(ServiceFund::getId, serviceFund.getId());
        }
        if (serviceFund.getFundTaxId() != null) {
            wrappers.eq(ServiceFund::getFundTaxId, serviceFund.getFundTaxId());
        }
        if (StringUtils.isNotBlank(serviceFund.getUserno())) {
            wrappers.eq(ServiceFund::getUserno, serviceFund.getUserno());
@@ -684,6 +694,11 @@
    }
    @Override
    public List<SpFinancialExpensesFundOut> getExpertfeeList(SpSelectExpertfee spSelectExpertfee) {
        return serviceFundMapper.getExpertfeeList(spSelectExpertfee.getPaApplyType(), spSelectExpertfee.getDonorname(), spSelectExpertfee.getPacheckno(), spSelectExpertfee.getCheckstatus(), spSelectExpertfee.getPadepartno(), spSelectExpertfee.getPausername());
    }
    @Override
    public int countItem(Long infoid, Long itemid) {
        List<ServiceFund> serviceFunds = serviceFundMapper.getInfoByInfoId(infoid);
        int count = 0;
@@ -898,6 +913,33 @@
        }
    }
    @Override
    public Map<String, Object> exportFeeSum(Integer faxId) {
        List<VExpertfeeTotal> list = vExpertfeeTotalMapper.selectVExpertfeeTotalListByTaxId(faxId);
        ExcelUtil<VExpertfeeTotal> util = new ExcelUtil<VExpertfeeTotal>(VExpertfeeTotal.class);
        AjaxResult ajaxResult = util.exportExcel(list, "vExpertfeeTotal");
        String filePath = RuoYiConfig.getDownloadPath() + ajaxResult.get("msg");
        List<VExpertfeeExpert> list2 = vExpertfeeExpertMapper.selectVExpertfeeExpertListByFaxId(faxId);
        ExcelUtil<VExpertfeeExpert> util2 = new ExcelUtil<VExpertfeeExpert>(VExpertfeeExpert.class);
        AjaxResult ajaxResult1 = util2.exportExcel(list2, "vExpertfeeExpert");
        List<String> list1 = new ArrayList<>();
        list1.add(ajaxResult.get("msg").toString());
        list1.add(ajaxResult1.get("msg").toString());
        String name = "专家费汇总单" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx";
        mergeExcel(list1, RuoYiConfig.getDownloadPath() + name);
        for (String path : list1) {
            new File(RuoYiConfig.getDownloadPath() + path).delete();
        }
        Map<String, Object> map = new HashMap<>();
        map.put("downloadUrl", "/profile/download/" + name);
        map.put("downloadName", name);
        return map;
    }
    int uploadOAFileAndUpdateDb(ServiceFunddetailShared remShare) {
        //上传OA文件
@@ -1089,4 +1131,46 @@
        return id;
    }
    public void mergeExcel(List<String> files, String outputFile) {
        try {
            Workbook resultWorkbook = new XSSFWorkbook();
            for (String file : files) {
                InputStream is1 = new FileInputStream(RuoYiConfig.getDownloadPath() + file);
                Workbook workbook1 = new XSSFWorkbook(is1);
                Sheet sheet1 = workbook1.getSheetAt(0);
                // 复制第一个文件的Sheet
                Sheet newSheet1 = resultWorkbook.createSheet(file.substring(0, file.indexOf(".")));
                for (Row row : sheet1) {
                    Row newRow = newSheet1.createRow(row.getRowNum());
                    int columns = row.getLastCellNum();
                    for (int i = 0; i < columns; i++) {
                        newSheet1.setColumnWidth(i, 5000);
                        Cell cell = row.getCell(i);
                        Cell newCell = newRow.createCell(cell.getColumnIndex());
                        newCell.setCellValue(cell.getStringCellValue());
                        // 创建单元格样式
                        CellStyle style = resultWorkbook.createCellStyle();
                        style.setAlignment(HorizontalAlignment.CENTER); // 水平居中
                        style.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
                        if (row.getRowNum() == 0) {
                            // 设置第一行背景色
                            style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
                            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
                        }
                        newCell.setCellStyle(style);
                    }
                }
            }
            FileOutputStream out = new FileOutputStream(outputFile);
            resultWorkbook.write(out);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Transactional(rollbackFor = Exception.class)
    public Boolean updateFundTaxIdById(Long id, Long fundTaxId) {
        return serviceFundMapper.updateFundTaxIdById(id, fundTaxId);
    }
}