package com.ruoyi.envaccess.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.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.envaccess.mapper.EnvInspectionMapper; import com.ruoyi.envaccess.pojo.EnvInspection; import com.ruoyi.envaccess.service.IEnvInspectionService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @Service @AllArgsConstructor @Transactional(rollbackFor = Exception.class) public class EnvInspectionServiceImpl extends ServiceImpl implements IEnvInspectionService { private EnvInspectionMapper envInspectionMapper; @Override public IPage listPage(Page page, EnvInspection req) { return envInspectionMapper.listPage(page, req); } @Override public void export(HttpServletResponse response, EnvInspection req) { List list = envInspectionMapper.list(req); ExcelUtil util = new ExcelUtil(EnvInspection.class); util.exportExcel(response, list, "智能巡检台账"); } /** * 根据巡检记录自动生成巡检报告(HTML),并写回 report_path */ @Override public String generateReport(Long id) { EnvInspection it = getById(id); if (it == null) { throw new BaseException("巡检记录不存在"); } String typeText = it.getInspectionType() == null ? "" : (it.getInspectionType() == 1 ? "定期巡检" : it.getInspectionType() == 2 ? "临时巡检" : it.getInspectionType() == 3 ? "故障巡检" : ""); String statusText = it.getStatus() == null ? "" : (it.getStatus() == 0 ? "待执行" : it.getStatus() == 1 ? "执行中" : it.getStatus() == 2 ? "已完成" : it.getStatus() == 3 ? "已取消" : ""); String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); StringBuilder sb = new StringBuilder(); sb.append("") .append("智能巡检报告"); sb.append("

智能巡检报告

"); sb.append("

报告生成时间:").append(now).append("

"); sb.append(""); row(sb, "巡检名称", it.getInspectionName()); row(sb, "巡检类型", typeText); row(sb, "巡检区域", it.getArea()); row(sb, "巡检路径规划", it.getRoutePlan()); row(sb, "计划时间", fmt(it.getPlanStartTime()) + " ~ " + fmt(it.getPlanEndTime())); row(sb, "实际时间", fmt(it.getActualStartTime()) + " ~ " + fmt(it.getActualEndTime())); row(sb, "巡检人员", it.getInspector()); row(sb, "巡检状态", statusText); row(sb, "巡检结果/记录", it.getInspectionResult()); row(sb, "AI视频分析结果", it.getAiAnalysis()); row(sb, "无人机/机器人数据", it.getUavData()); row(sb, "备注", it.getRemark()); sb.append("
"); sb.append("

巡检人签字:________________    审批人签字:________________

"); sb.append(""); String content = sb.toString(); EnvInspection upd = new EnvInspection(); upd.setId(id); upd.setReportPath(content); updateById(upd); return content; } private static String fmt(java.util.Date d) { if (d == null) { return ""; } return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d); } private static void row(StringBuilder sb, String label, Object value) { sb.append("").append(label) .append("").append(value == null ? "" : String.valueOf(value).replace("\n", "
")) .append(""); } }