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