From 4f3a98f19143865cdc1de4791e8a95d96bd40c65 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 01 八月 2025 13:27:59 +0800
Subject: [PATCH] yys 密码已重置

---
 cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java |  225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 225 insertions(+), 0 deletions(-)

diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java
new file mode 100644
index 0000000..e9e9b18
--- /dev/null
+++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceInspectionRecordServiceImpl.java
@@ -0,0 +1,225 @@
+package com.ruoyi.device.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.deepoove.poi.XWPFTemplate;
+import com.deepoove.poi.config.Configure;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.core.domain.entity.User;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.device.dto.DeviceInspectionRecordDto;
+import com.ruoyi.device.mapper.DeviceInspectionRecordMapper;
+import com.ruoyi.device.mapper.DeviceMapper;
+import com.ruoyi.device.pojo.Device;
+import com.ruoyi.device.pojo.DeviceInspectionRecord;
+import com.ruoyi.device.pojo.DeviceInspectionRecordDetails;
+import com.ruoyi.device.service.DeviceInspectionRecordDetailsService;
+import com.ruoyi.device.service.DeviceInspectionRecordService;
+import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
+import com.ruoyi.inspect.util.UserUtils;
+import com.ruoyi.system.mapper.UserMapper;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URLEncoder;
+import java.time.format.DateTimeFormatter;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ * 璁惧鐐规璁板綍琛� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-12-16 04:25:14
+ */
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class DeviceInspectionRecordServiceImpl extends ServiceImpl<DeviceInspectionRecordMapper, DeviceInspectionRecord> implements DeviceInspectionRecordService {
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private DeviceMapper deviceMapper;
+    @Resource
+    private DeviceInspectionRecordDetailsService deviceInspectionRecordDetailsService;
+    @Resource
+    private DeviceInspectionRecordMapper deviceInspectionRecordMapper;
+
+    /**
+     * 鍒嗛〉鏌ヨ璁惧鐐规璁板綍
+     *
+     * @param page 褰撳墠椤电爜
+     */
+    @Override
+    public Result<IPage<DeviceInspectionRecord>> getDeviceInspectionRecordByPage(Page page, DeviceInspectionRecordDto deviceInspectionRecordDto) {
+        IPage<DeviceInspectionRecord> iPage = deviceInspectionRecordMapper.selectDeviceParameterPage(page, QueryWrappers.queryWrappers(deviceInspectionRecordDto));
+        return Result.success(iPage);
+    }
+
+
+    /**
+     * 鏌ヨ鐐规璇︽儏
+     * @param inspectionRecordId
+     * @return
+     */
+    @Override
+    public Result getDeviceInspectionRecord(Integer inspectionRecordId) {
+        DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(inspectionRecordId);
+        DeviceInspectionRecordDto dto = new DeviceInspectionRecordDto();
+        BeanUtils.copyProperties(deviceInspectionRecord, dto);
+        List<DeviceInspectionRecordDetails> list = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, inspectionRecordId));
+        dto.setDetails(list);
+        return Result.success(dto);
+    }
+
+    /**
+     * 鏂板璁惧鐐规璁板綍
+     *
+     * @param deviceInspectionRecord 璁惧鐐规璁板綍
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result addDeviceInspectionRecord(DeviceInspectionRecordDto deviceInspectionRecord) {
+
+        Integer userId = SecurityUtils.getUserId().intValue();
+        User user = userMapper.selectById(userId);
+        deviceInspectionRecord.setRecorderId(userId);
+        deviceInspectionRecord.setRecorder(user.getName());
+
+        // 鏌ヨ澶嶆牳浜篿d
+        if (deviceInspectionRecord.getReviewerId() != null) {
+            User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
+            deviceInspectionRecord.setReviewer(reviewUser.getName());
+        }
+        this.saveOrUpdate(deviceInspectionRecord);
+        if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
+            for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
+                detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
+            }
+            deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
+        }
+
+        return Result.success();
+    }
+
+
+    /**
+     * 淇敼璁惧鐐规璁板綍
+     *
+     * @param deviceInspectionRecord 璁惧鐐规璁板綍
+     */
+    @Override
+    public Result updateInspectionRecordAndDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
+        // 鏌ヨ澶嶆牳浜篿d
+        if (deviceInspectionRecord.getReviewerId() != null) {
+            User reviewUser = userMapper.selectById(deviceInspectionRecord.getReviewerId());
+            deviceInspectionRecord.setReviewer(reviewUser.getName());
+        }
+        this.saveOrUpdate(deviceInspectionRecord);
+        deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
+        if (CollectionUtils.isNotEmpty(deviceInspectionRecord.getDetails())) {
+            for (DeviceInspectionRecordDetails detail : deviceInspectionRecord.getDetails()) {
+                detail.setInspectionRecordId(deviceInspectionRecord.getInspectionRecordId());
+            }
+            deviceInspectionRecordDetailsService.saveBatch( deviceInspectionRecord.getDetails());
+        }
+        return Result.success();
+    }
+
+    /**
+     * 鍒犻櫎璁惧鐐规璁板綍
+     *
+     * @param deviceInspectionRecord 璁惧鐐规璁板綍
+     */
+    @Override
+    public Result deleteDeviceInspectionRecordOrDetails(DeviceInspectionRecordDto deviceInspectionRecord) {
+        this.removeById(deviceInspectionRecord);
+        deviceInspectionRecordDetailsService.remove(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecord.getInspectionRecordId()));
+        return Result.success();
+    }
+
+    /**
+     * 澶嶆牳鐐规璁板綍
+     * @param dto
+     * @return
+     */
+    @Override
+    public Result reviewDeviceInspectionRecord(DeviceInspectionRecordDto dto) {
+        LambdaUpdateWrapper<DeviceInspectionRecord> wrapper = Wrappers.<DeviceInspectionRecord>lambdaUpdate()
+                .eq(DeviceInspectionRecord::getInspectionRecordId, dto.getInspectionRecordId())
+                .set(DeviceInspectionRecord::getStatus, dto.getStatus())
+                .set(DeviceInspectionRecord::getReviewerRemark, dto.getReviewerRemark());
+
+        // 涓�0娓呴櫎瀹℃牳浜�
+        if (dto.getStatus().equals(0)) {
+            wrapper.set(DeviceInspectionRecord::getReviewerId, null)
+                    .set(DeviceInspectionRecord::getReviewer, null);
+        }
+        this.update(wrapper);
+
+        return Result.success();
+    }
+
+    /**
+     * 瀵煎嚭璁惧鐐规璁板綍
+     *
+     * @param deviceInspectionRecordId 璁惧鐐规璁板綍id
+     * @param response                 鍝嶅簲
+     */
+    @Override
+    public Result exportDeviceInspectionRecord(Integer deviceInspectionRecordId, HttpServletResponse response) {
+        DeviceInspectionRecord deviceInspectionRecord = baseMapper.selectById(deviceInspectionRecordId);
+        DeviceInspectionRecordDto deviceInspectionRecordDto = new DeviceInspectionRecordDto();
+        BeanUtils.copyProperties(deviceInspectionRecord, deviceInspectionRecordDto);
+        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        deviceInspectionRecordDto.setTestDateString(deviceInspectionRecord.getTestDate() == null ? null : deviceInspectionRecord.getTestDate().format(dateFormatter));
+
+        List<DeviceInspectionRecordDetails> deviceInspectionRecordDetailsList = deviceInspectionRecordDetailsService.list(Wrappers.<DeviceInspectionRecordDetails>lambdaQuery().eq(DeviceInspectionRecordDetails::getInspectionRecordId, deviceInspectionRecordId));
+
+        Integer deviceId = deviceInspectionRecord.getDeviceId();
+
+        Device device = deviceMapper.selectById(deviceId);
+
+        // 鑾峰彇璺緞
+        InputStream inputStream = this.getClass().getResourceAsStream("/static/word/device-inspection-record.docx");
+        Configure configure = Configure.builder()
+                .bind("deviceInspectionRecordDetailsList", new HackLoopTableRenderPolicy())
+                .build();
+        XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render(
+                new HashMap<String, Object>() {{
+                    put("deviceInspectionRecord", deviceInspectionRecordDto);
+                    put("deviceInspectionRecordDetailsList", deviceInspectionRecordDetailsList);
+                    put("device", device);
+                    put("recorderUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getRecorderId()));
+                    put("reviewerUrl", UserUtils.getFinalUserSignatureUrl(deviceInspectionRecordDto.getReviewerId()));
+                }});
+
+        try {
+            response.setContentType("application/msword");
+            String fileName = URLEncoder.encode(
+                    device.getDeviceName() + "鐐规璁板綍", "UTF-8");
+            response.setHeader("Content-disposition",
+                    "attachment;filename=" + fileName + ".docx");
+            OutputStream os = response.getOutputStream();
+            template.write(os);
+            os.flush();
+            os.close();
+            inputStream.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("瀵煎嚭澶辫触");
+        }
+        return Result.success();
+    }
+}

--
Gitblit v1.9.3