zhuo
2025-04-18 8b4d7246fb735d965195201e80178b5d1528a486
cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceImpowerServiceImpl.java
@@ -39,6 +39,7 @@
import java.io.OutputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@@ -182,17 +183,17 @@
     */
    @Override
    public Result submitReviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
//        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
//        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
//                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
//                .set(DeviceImpower::getAuditId, audit.getId())
//                .set(DeviceImpower::getAudit, audit.getName())
//                .set(DeviceImpower::getAuditDate, null)
//                .set(DeviceImpower::getStatus, null)
//                .set(DeviceImpower::getAuditRemark, null));
//
//        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
//
        User audit = userMapper.selectById(deviceImpowerDto.getAuditId());
        this.update(Wrappers.<DeviceImpower>lambdaUpdate()
                .eq(DeviceImpower::getImpowerId, deviceImpowerDto.getImpowerId())
                .set(DeviceImpower::getAuditId, audit.getId())
                .set(DeviceImpower::getAudit, audit.getName())
                .set(DeviceImpower::getAuditDate, null)
                .set(DeviceImpower::getStatus, null)
                .set(DeviceImpower::getAuditRemark, null));
        DeviceImpower deviceImpower = baseMapper.selectById(deviceImpowerDto.getImpowerId());
//        // 发送消息
//        Integer userId = SecurityUtils.getUserId().intValue();
//        User user = userMapper.selectById(userId);
@@ -226,9 +227,9 @@
    }
    /**
     * 审核设备使用
     *
     * @param deviceImpowerDto 设备使用
     *
     * @param deviceImpowerDto
     */
    @Override
    public Result reviewImpowerStatus(DeviceImpowerDto deviceImpowerDto) {
@@ -245,50 +246,54 @@
    /**
     * 导出设备使用
     *
     * @param ImpowerId 设备使用id
     * @param impowerId 设备使用id
     */
    @Override
    public Result exportDeviceImpowerDto(Integer ImpowerId, HttpServletResponse response) {
//        // 查询设备保养计划
//        DeviceImpowerDto deviceImpower = baseMapper.selectDeviceImpowerById(ImpowerId);
//
//        // 查询设备保养计划详情
//        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(ImpowerId);
//        // 设置序号
//        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
//            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
//        });
//
//        // 获取路径
//        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/traceability-management-details.docx");
//        Configure configure = Configure.builder()
//                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
//                .build();
//        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
//                new HashMap<String, Object>() {{
//                    put("deviceImpower", deviceImpower);
//                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
//                    // 编制人签名地址
//                    put("compilerUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getCompilerId()));
//                    // 审核人签名地址
//                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
//                }});
//
//        try {
//            response.setContentType("application/msword");
//            String finalFileName = deviceImpower.getFileName() == null ? "" : deviceImpower.getFileName() + "_";
//            String fileName = URLEncoder.encode(
//                    finalFileName+ "设备使用", "UTF-8");
//            response.setHeader("Content-disposition",
//                    "attachment;filename=" + fileName + ".docx");
//            OutputStream os = response.getOutputStream();
//            template.write(os);
//            os.flush();
//            os.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new RuntimeException("导出失败");
//        }
    public Result exportDeviceImpowerDto(Integer impowerId, HttpServletResponse response) {
        // 查询设备使用授权计划
        DeviceImpower deviceImpower = baseMapper.selectById(impowerId);
        DeviceImpowerDto deviceImpowerDto = new DeviceImpowerDto();
        BeanUtils.copyProperties(deviceImpower, deviceImpowerDto);
        // 格式化日期中英文
        DateTimeFormatter formatterCH = DateTimeFormatter.ofPattern("yyyy 年 MM 月 dd 日");
        DateTimeFormatter formatterEN = DateTimeFormatter.ofPattern("yyyy 'Year' MM 'Month' dd 'Day'");
        deviceImpowerDto.setAuditDateCH(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterCH));
        deviceImpowerDto.setAuditDateEN(deviceImpower.getAuditDate() == null ? null : deviceImpower.getAuditDate().format(formatterEN));
        // 查询设备保养计划详情
        List<DeviceImpowerDetailsDto> deviceImpowerDetailsDtoList = deviceImpowerDetailsMapper.deviceImpowerDetailsList(impowerId);
        // 设置序号
        deviceImpowerDetailsDtoList.forEach(deviceImpowerDetails -> {
            deviceImpowerDetails.setIndex(deviceImpowerDetailsDtoList.indexOf(deviceImpowerDetails) + 1);
        });
        // 获取路径
        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-impower.docx");
        Configure configure = Configure.builder()
                .bind("deviceImpowerDetailsDtoList", new HackLoopTableRenderPolicy())
                .build();
        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
                new HashMap<String, Object>() {{
                    put("deviceImpower", deviceImpowerDto);
                    put("deviceImpowerDetailsDtoList", deviceImpowerDetailsDtoList);
                    // 授权人地址
                    put("auditUrl", UserUtils.getFinalUserSignatureUrl(deviceImpower.getAuditId()));
                }});
        try {
            response.setContentType("application/msword");
            String fileName = URLEncoder.encode(
                    "设备使用授权", "UTF-8");
            response.setHeader("Content-disposition",
                    "attachment;filename=" + fileName + ".docx");
            OutputStream os = response.getOutputStream();
            template.write(os);
            os.flush();
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
        return Result.success();
    }
}