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/DeviceRecordServiceImpl.java | 148 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 148 insertions(+), 0 deletions(-) diff --git a/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java new file mode 100644 index 0000000..15b388b --- /dev/null +++ b/cnas-device/src/main/java/com/ruoyi/device/service/impl/DeviceRecordServiceImpl.java @@ -0,0 +1,148 @@ +package com.ruoyi.device.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +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.utils.SecurityUtils; +import com.ruoyi.device.dto.DeviceRecordDto; +import com.ruoyi.device.excel.DeviceRecordExportWord; +import com.ruoyi.device.mapper.DeviceMapper; +import com.ruoyi.device.mapper.DeviceRecordMapper; +import com.ruoyi.device.pojo.Device; +import com.ruoyi.device.pojo.DeviceRecord; +import com.ruoyi.device.service.DeviceRecordService; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.system.domain.vo.SysRoleVo; +import com.ruoyi.system.mapper.SysRoleMenuMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * <p> + * cnas璁惧浣跨敤璁板綍琛� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃 + * @since 2024-09-21 11:06:47 + */ +@Service +public class DeviceRecordServiceImpl extends ServiceImpl<DeviceRecordMapper, DeviceRecord> implements DeviceRecordService { + @Resource + private DeviceMapper deviceMapper; + + @Resource + private SysRoleMenuMapper sysRoleMenuMapper; + + @Override + public IPage<DeviceRecordDto> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) { + // todo:浠呯湅鑷繁 + Long userId = SecurityUtils.getUserId(); + // 鑾峰彇鏉冮檺鍒ゆ柇鏄惁鏄粎鐪嬫垜 + SysRoleVo sysRoleVo = sysRoleMenuMapper.selectRoleMenu("get:device:record", userId); + + Integer testUserId = null; + //娌℃湁浠呯湅鎴戞潈闄愯烦杩� + if (sysRoleVo != null && sysRoleVo.getIsRersonal() != null && sysRoleVo.getIsRersonal().equals(1)) { + testUserId = SecurityUtils.getUserId().intValue(); + } + + return baseMapper.deviceRecordPage(deviceId, page, sampleCode, managementNumber, testUserId); + } + + + @Override + public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response) { + // 鏌ヨcnas璁惧浣跨敤璁板綍 + List<DeviceRecord> deviceList = baseMapper.selectExportList(deviceId, exportDate); + // 璁惧淇℃伅 + Device device = deviceMapper.selectById(deviceId); + + + // 鏌ヨ璁惧灞炰簬鍝釜瀹為獙瀹� + String laboratoryName = "瑁呭绾跨紗瀹為獙瀹�"; + + // 瑕佹槧灏勫埌word鏁版嵁 + List<DeviceRecordExportWord> deviceExportList = new ArrayList<>(); + // deviceExportList 璧嬪�� + for (DeviceRecord deviceRecord : deviceList) { + // 澶勭悊璁惧 寮�濮嬩娇鐢ㄦ椂闂� 鍜� 缁撴潫鏃堕棿 + String startTime = ""; + String endTime = ""; + String operationDate = ""; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + if (deviceRecord.getUseStartDate() != null) { + startTime = deviceRecord.getUseStartDate().format(formatter); + endTime = deviceRecord.getUseEndDate().format(formatter); + String[] startTimeSplit = startTime.split(" "); + String[] endTimeSplit = endTime.split(" "); + if (startTimeSplit[0].equals(endTimeSplit[0])) { + startTime = startTimeSplit[1]; + endTime = endTimeSplit[1]; + } else { + endTime = endTimeSplit[0] + '\n' + endTimeSplit[1]; + startTime = startTimeSplit[0] + '\n' + startTimeSplit[1]; + } + DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy.M.d"); + operationDate = deviceRecord.getUseStartDate().format(formatter2); + } + // 澶勭悊浣跨敤鍓嶅拰浣跨敤鍚� + String useBeforeString = deviceRecord.getUseBefore() == 0? "寮傚父" : "鑹ソ"; + String useAfterString = deviceRecord.getUseAfter() == 0 ? "寮傚父" : "鑹ソ"; + + DeviceRecordExportWord deviceRecordExportWord = new DeviceRecordExportWord(); + // 杩涜璧嬪�� + BeanUtils.copyProperties(deviceRecord, deviceRecordExportWord); + deviceRecordExportWord.setUseBeforeString(useBeforeString); // 浣跨敤鍓� + deviceRecordExportWord.setUseAfterString(useAfterString); // 浣跨敤鍚� + deviceRecordExportWord.setOperationDate(operationDate); // 璁惧鎿嶄綔鏃ユ湡 + deviceRecordExportWord.setUseStartDateString(startTime); // 寮�濮嬫椂闂� + deviceRecordExportWord.setUseEndDateString(endTime); // 缁撴潫鏃堕棿 + deviceExportList.add(deviceRecordExportWord); + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/word/use-record.docx"); + Configure configure = Configure.builder() + .bind("useRecord", new HackLoopTableRenderPolicy()) + .build(); + String deviceName = device.getDeviceName(); + String managementNumber = device.getManagementNumber(); + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("useRecord", deviceExportList); + put("deviceName", deviceName); + put("managementNumber", managementNumber); + put("laboratory", laboratoryName); + }}); + + 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(); + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("瀵煎嚭澶辫触"); + } + } + +} -- Gitblit v1.9.3