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-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java | 144 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 144 insertions(+), 0 deletions(-) diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java new file mode 100644 index 0000000..87597fd --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java @@ -0,0 +1,144 @@ +package com.ruoyi.require.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +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.deepoove.poi.data.Pictures; +import com.ruoyi.common.utils.QueryWrappers; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.inspect.util.HackLoopTableRenderPolicy; +import com.ruoyi.require.dto.FeTempHumDateDto; +import com.ruoyi.require.dto.FeTempHumRecordDto; +import com.ruoyi.require.mapper.FeTempHumDateMapper; +import com.ruoyi.require.pojo.FeTempHumDate; +import com.ruoyi.require.pojo.FeTempHumRecord; +import com.ruoyi.require.service.FeTempHumDateService; +import com.ruoyi.require.service.FeTempHumRecordService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; +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.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * <p> + * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴� 鍖哄煙 -鐖� 鏈嶅姟瀹炵幇绫� + * </p> + * + * @author + * @since 2024-11-09 11:02:18 + */ +@Service +public class FeTempHumDateServiceImpl extends ServiceImpl<FeTempHumDateMapper, FeTempHumDate> implements FeTempHumDateService { + + @Resource + private FeTempHumRecordService feTempHumRecordService; + @Value("${file.path}") + private String imgUrl; + + @Override + public IPage<FeTempHumDateDto> getFeTempHumDate(Page page, FeTempHumDateDto feTempHumDateDto) { + return baseMapper.getFeTempHumDate(page, QueryWrappers.queryWrappers(feTempHumDateDto)); + } + + @Override + public void exportTemperatureAndHumidityRecords(Integer dateId, HttpServletResponse response) { + FeTempHumDate feTempHumDate = baseMapper.selectById(dateId); + // 鑾峰彇骞村害鏈堝害鏃堕棿 + String[] month = feTempHumDate.getMonthDate().split("-"); + + IPage<FeTempHumRecordDto> list = feTempHumRecordService.getFeTempHumRecordPage(new Page<>(1, -1), dateId); + List<FeTempHumRecordDto> feTempHumRecordDtos = list.getRecords(); + // 鎸夌収澶╂暟鍒嗙粍 + Map<Integer, List<FeTempHumRecordDto>> groupMap = feTempHumRecordDtos.stream().peek(feTempHumRecordDto -> { + feTempHumRecordDto.setMonthDay(feTempHumRecordDto.getRecordDate().getDayOfMonth()); + }) + .collect(Collectors.groupingBy(FeTempHumRecordDto::getMonthDay)); + + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); + // 閬嶅巻31鑾峰彇31涓璞� + List<FeTempHumRecordDto> recordDtoList = new ArrayList<>(); + for (int i = 1; i <= 31; i++) { + FeTempHumRecordDto recordDto = new FeTempHumRecordDto(); + recordDto.setMonth(i); + recordDtoList.add(recordDto); + // 鑾峰彇褰撳墠鏈堢殑 + List<FeTempHumRecordDto> recordDtos = groupMap.get(i); + if (CollectionUtils.isNotEmpty(recordDtos)) { + // 澶嶅埗瀵硅薄 + BeanUtils.copyProperties(recordDtos.get(0), recordDto, "month"); + recordDto.setMorningTestTimeStr(recordDto.getMorningTestTime() == null ? null : recordDto.getMorningTestTime().format(formatter)); + recordDto.setAfternoonTimeStr(recordDto.getAfternoonTime() == null ? null : recordDto.getAfternoonTime().format(formatter)); + recordDto.setMorningRecorderUrlRender(StringUtils.isNotBlank(recordDto.getMorningRecorderUrl()) + ? Pictures.ofLocal(imgUrl + "/" + recordDto.getMorningRecorderUrl()).create() : null); + recordDto.setAfternoonRecorderUrlRender(StringUtils.isNotBlank(recordDto.getAfternoonRecorderUrl()) + ? Pictures.ofLocal(imgUrl + "/" + recordDto.getAfternoonRecorderUrl()).create() : null); + } + + } + + // 鑾峰彇璺緞 + InputStream inputStream = this.getClass().getResourceAsStream("/static/temp_hum_date.docx"); + Configure configure = Configure.builder() + .bind("recordList", new HackLoopTableRenderPolicy()) + .build(); + + HashMap<String, Object> map = new HashMap<>(); + map.put("testAreaName", feTempHumDate.getTestAreaName()); + map.put("experimentalYear", month[0]); + map.put("experimentalMonth", month[1]); + map.put("subjoin", feTempHumDate.getSubjoin()); + + XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( + new HashMap<String, Object>() {{ + put("feTempHum", map); + put("recordList", recordDtoList); + }}); + + 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("瀵煎嚭澶辫触"); + } + } + + /** + * 娓╂箍搴︾‘璁� + * @param feTempHumDate + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void affirmFeTempHumDate(FeTempHumDate feTempHumDate) { + // 娓╂箍搴︾‘璁� + this.update(Wrappers.<FeTempHumDate>lambdaUpdate() + .eq(FeTempHumDate::getDateId, feTempHumDate.getDateId()) + .set(FeTempHumDate::getRegistrarUserId, feTempHumDate.getRegistrarUserId())); + + } +} -- Gitblit v1.9.3