龚焕茏
2024-07-30 5ed3405a0156f76decc081c9f1d65d2f44f1ad8c
feat:核算报告导出
5个文件已修改
1个文件已添加
174 ■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/excel/CalculateExport.java
New file
@@ -0,0 +1,63 @@
package com.ycl.platform.domain.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.*;
import com.alibaba.excel.enums.BooleanEnum;
import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum;
import com.alibaba.excel.enums.poi.VerticalAlignmentEnum;
import lombok.Data;
import java.math.BigDecimal;
/**
 * @author gonghl
 * @since 2024/7/30 上午 10:01
 */
@Data
@ColumnWidth(20)
@HeadRowHeight(30)
@ContentRowHeight(30)
@HeadStyle(fillForegroundColor = 64)
@ContentStyle(horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER)
@ContentFontStyle(fontHeightInPoints = 18, bold = BooleanEnum.TRUE, fontName = "宋体")
@HeadFontStyle(fontHeightInPoints = 18, bold = BooleanEnum.TRUE, fontName = "宋体")
public class CalculateExport {
    /**
     * 规则名称
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "规则名称"})
    @ColumnWidth(40)
    private String ruleName;
    /**
     * 数量
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "数量"})
    private Integer num;
    /**
     * 金额
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "金额"})
    private BigDecimal money;
    /**
     * 分数
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "分数"})
    private Integer score;
    /**
     * 剩余分数
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "剩余分数"})
    private Integer surplusScore;
    /**
     * 合计
     */
    @ExcelProperty({"自贡市公共视频监控系统续维合同", "合计"})
    private BigDecimal total;
}
ycl-server/src/main/java/com/ycl/platform/controller/CalculateReportController.java
@@ -1,22 +1,15 @@
package com.ycl.platform.controller;
import com.ycl.platform.domain.form.CalculateReportBackfillForm;
import com.ycl.platform.domain.param.HK.CoordinateByAreaParam;
import com.ycl.system.domain.group.Update;
import com.ycl.system.domain.group.Add;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import lombok.RequiredArgsConstructor;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import jakarta.validation.constraints.NotEmpty;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.ycl.platform.domain.query.CalculateReportQuery;
import com.ycl.platform.service.CalculateReportService;
import com.ycl.system.Result;
import com.ycl.platform.domain.form.CalculateReportForm;
import com.ycl.platform.domain.query.CalculateReportQuery;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
@@ -62,4 +55,11 @@
        return calculateReportService.updatePublishStatus(reportId);
    }
    @PostMapping("/export")
    @ApiOperation(value = "导出", notes = "导出")
    @PreAuthorize("@ss.hasPermi('system:calculate:report:export')")
    public void export(Integer contractId, HttpServletResponse response) {
        calculateReportService.export(contractId, response);
    }
}
ycl-server/src/main/java/com/ycl/platform/mapper/CalculateReportMapper.java
@@ -1,16 +1,16 @@
package com.ycl.platform.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.platform.domain.entity.CalculateReport;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.excel.CalculateExport;
import com.ycl.platform.domain.query.CalculateReportQuery;
import com.ycl.platform.domain.vo.CalculateRecordVO;
import com.ycl.platform.domain.vo.CalculateReportDetailVO;
import com.ycl.platform.domain.vo.CalculateReportVO;
import com.ycl.platform.domain.form.CalculateReportForm;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * 核算报告 Mapper 接口
@@ -37,4 +37,10 @@
     * @return
     */
    CalculateReportDetailVO getById(@Param("id") Long id);
    /**
     * 导出数据
     * @return 数据
     */
    List<CalculateExport> exportData(Integer contractId);
}
ycl-server/src/main/java/com/ycl/platform/service/CalculateReportService.java
@@ -6,6 +6,8 @@
import com.ycl.system.Result;
import com.ycl.platform.domain.form.CalculateReportForm;
import com.ycl.platform.domain.query.CalculateReportQuery;
import jakarta.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -79,4 +81,10 @@
     * @return
     */
    Result updatePublishStatus(Long reportId);
    /**
     * 导出
     * @param response 响应
     */
    void export(Integer contractId, HttpServletResponse response);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/CalculateReportServiceImpl.java
@@ -1,40 +1,37 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.CalculateRecord;
import com.ycl.platform.domain.entity.CalculateReport;
import com.ycl.platform.domain.excel.CalculateExport;
import com.ycl.platform.domain.form.CalculateReportBackfillForm;
import com.ycl.platform.domain.vo.CalculateRecordVO;
import com.ycl.platform.domain.form.CalculateReportForm;
import com.ycl.platform.domain.query.CalculateReportQuery;
import com.ycl.platform.domain.vo.CalculateReportDetailVO;
import com.ycl.platform.domain.vo.CalculateReportVO;
import com.ycl.platform.mapper.CalculateRecordMapper;
import com.ycl.platform.mapper.CalculateReportMapper;
import com.ycl.platform.service.CalculateReportService;
import com.ycl.system.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.form.CalculateReportForm;
import com.ycl.platform.domain.vo.CalculateReportVO;
import com.ycl.platform.domain.query.CalculateReportQuery;
import java.math.BigDecimal;
import java.util.List;
import com.ycl.utils.SecurityUtils;
import enumeration.general.CalculateReportStatusEnum;
import org.apache.commons.lang3.StringUtils;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.system.page.PageUtil;
import org.springframework.stereotype.Service;
import org.springframework.security.core.context.SecurityContextHolder;
import enumeration.general.CalculateReportStatusEnum;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import lombok.RequiredArgsConstructor;
import org.springframework.util.CollectionUtils;
/**
 * 核算报告 服务实现类
@@ -198,4 +195,16 @@
        baseMapper.updateById(report);
        return Result.ok("操作成功");
    }
    @Override
    @SneakyThrows
    public void export(Integer contractId, HttpServletResponse response) {
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("核算报告", StandardCharsets.UTF_8).replace("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), CalculateExport.class)
                .sheet("核算报告")
                .doWrite(baseMapper.exportData(contractId));
    }
}
ycl-server/src/main/resources/mapper/zgyw/CalculateReportMapper.xml
@@ -20,6 +20,7 @@
    <select id="page" resultMap="BaseResultMap">
        SELECT
            tcr.contract_id,
            tyu.unit_name,
            tc.name,
            tcr.id,
@@ -99,4 +100,15 @@
        WHERE tcr.id = #{id}
    </select>
    <select id="exportData" resultType="com.ycl.platform.domain.excel.CalculateExport">
        SELECT
            SUBSTRING_INDEX(rule_name, '/', 1) AS rule_name,
            COUNT(*) AS num,
            SUM(score) AS score,
            (100 - SUM(score)) AS surplusScore
        FROM t_contract_score
        WHERE contract_id = #{contractId} AND auditing_status = 'PASS' AND deleted = 0
        GROUP BY SUBSTRING_INDEX(rule_name, '/', 1)
    </select>
</mapper>