Ver Fonte

特种设备报告 明细

ly há 1 ano atrás
pai
commit
f72053dd61

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevCcMapper.java

@@ -74,4 +74,6 @@ public interface TSpecdevCcMapper extends BaseMapper<TSpecdevCc>
     int updateTSpecdevCcByHi(TSpechiCc hientity);
 
     void duplicateTSpecdevCc();
+
+    List<TSpecdevCc> selectExpiredCc();
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDtMapper.java

@@ -75,4 +75,6 @@ public interface TSpecdevDtMapper extends BaseMapper<TSpecdevDt>
 
 
     void duplicateTSpecdevDt();
+
+    List<TSpecdevDt> selectExpiredDt();
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevDzsbMapper.java

@@ -75,4 +75,6 @@ public interface TSpecdevDzsbMapper extends BaseMapper<TSpecdevDzsb>
 
 
     void duplicateTSpecdevDzsb();
+
+    List<TSpecdevDzsb> selectExpiredDzsb();
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevGlMapper.java

@@ -71,4 +71,6 @@ public interface TSpecdevGlMapper extends BaseMapper<TSpecdevGl>
 
 
     void duplicateTSpecdevGl();
+
+    List<TSpecdevGl> selectExpiredGl();
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlgdMapper.java

@@ -81,4 +81,6 @@ public interface TSpecdevYlgdMapper extends BaseMapper<TSpecdevYlgd> {
     void duplicateTSpecdevYlgd();
 
     void syncReport(String valueOf);
+
+    List<TSpecdevYlgd> selectExpiredYlgd();
 }

+ 2 - 0
master/src/main/java/com/ruoyi/project/sems/mapper/TSpecdevYlrqMapper.java

@@ -79,4 +79,6 @@ public interface TSpecdevYlrqMapper extends BaseMapper<TSpecdevYlrq> {
     void duplicateTSpecdevYlrq();
 
     void syncReport(TSpecdevYlrq tSpecdevYlrq);
+
+    List<TSpecdevYlrq> selectExpiredYlrq();
 }

+ 502 - 5
master/src/main/java/com/ruoyi/project/sems/service/impl/TSpecReportServiceImpl.java

@@ -1,10 +1,8 @@
 package com.ruoyi.project.sems.service.impl;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
+import java.io.*;
 import java.net.URLEncoder;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -21,6 +19,7 @@ import com.ruoyi.framework.config.RuoYiConfig;
 import com.ruoyi.framework.web.controller.BaseController;
 import com.ruoyi.project.plant.domain.TStaffmgr;
 import com.ruoyi.project.sems.domain.*;
+import com.ruoyi.project.sems.mapper.*;
 import com.ruoyi.project.sems.service.*;
 import com.ruoyi.project.system.domain.SysDictData;
 import com.ruoyi.project.training.domain.TTraining;
@@ -32,7 +31,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.ruoyi.project.sems.mapper.TSpecReportMapper;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -60,6 +58,18 @@ public class TSpecReportServiceImpl implements ITSpecReportService {
     private ITSpecdevYlrqService tSpecdevYlrqService;
     @Autowired
     private ITSpecdevCcService tSpecdevCcService;
+    @Resource
+    private TSpecdevCcMapper tSpecdevCcMapper;
+    @Resource
+    private TSpecdevYlrqMapper tSpecdevYlrqMapper;
+    @Resource
+    private TSpecdevYlgdMapper tSpecdevYlgdMapper;
+    @Resource
+    private TSpecdevGlMapper tSpecdevGlMapper;
+    @Resource
+    private TSpecdevDzsbMapper tSpecdevDzsbMapper;
+    @Resource
+    private TSpecdevDtMapper tSpecdevDtMapper;
 
     protected final Logger logger = LoggerFactory.getLogger(BaseController.class);
 
@@ -109,6 +119,9 @@ public class TSpecReportServiceImpl implements ITSpecReportService {
             replaceExcelByHi(wb);
             replaceExcelExpireByThreeMonth(wb);
             replaceExcelExpire(wb);
+            //创建明细excel
+            String detailUrl = createDetailExcel(tSpecReport);
+
             // Save the generated file
             File dir = new File(fileDir);
             if (!dir.exists()) {
@@ -128,6 +141,7 @@ public class TSpecReportServiceImpl implements ITSpecReportService {
             String pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir ;
             tSpecReport.setReportUrl(pathFileName);
             tSpecReport.setReportName(dateStr + "报告");
+            tSpecReport.setDetailUrl(detailUrl);
             tSpecReportMapper.updateTSpecReport(tSpecReport);
         } catch (Exception e) {
             e.printStackTrace();
@@ -546,4 +560,487 @@ public class TSpecReportServiceImpl implements ITSpecReportService {
     public int deleteTSpecReportById(Long id) {
         return tSpecReportMapper.deleteTSpecReportById(id);
     }
+
+    private String createDetailExcel(TSpecReport tSpecReport) {
+        SXSSFWorkbook wb = new SXSSFWorkbook(1000);
+        CellStyle wrapStyle = wb.createCellStyle();
+        wrapStyle.setWrapText(true);    //设置自动换行
+        //
+        replaceDetailYrlq(wb);
+        replaceDetailYrgd(wb);
+        replaceDetailGl(wb);
+        replaceDetailDt(wb);
+        replaceDetailDzsb(wb);
+        replaceDetailCc(wb);
+
+
+        try {
+        String fileDir = RuoYiConfig.getProfile() + "/" + "sems/spec-report-detail";
+        // Save the generated file
+        File dir = new File(fileDir);
+        if (!dir.exists()) {
+            logger.info("目录不存在,创建文件夹{}!", fileDir);
+            dir.mkdirs();
+        }
+        FileOutputStream fos = null;
+        LocalDate currentDate = LocalDate.now();
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
+        String dateStr = currentDate.format(formatter);
+        String filePath = fileDir + "/" + dateStr + "ReportDetail" + tSpecReport.getId() +".xlsx";
+
+        fos = new FileOutputStream(filePath);
+
+        wb.write(fos);
+        //
+        int dirLastIndex = RuoYiConfig.getProfile().length() + 1;
+        String currentDir = StringUtils.substring(filePath, dirLastIndex);
+        String pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir ;
+        return pathFileName;
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    private void replaceDetailYrlq(SXSSFWorkbook wb) {
+        List<TSpecdevYlrq> list = tSpecdevYlrqMapper.selectExpiredYlrq();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("压力容器");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12 * 256);
+        sheet.setColumnWidth(1, 26 * 256);
+        sheet.setColumnWidth(2, 26 * 256);
+        sheet.setColumnWidth(3, 26 * 256);
+        sheet.setColumnWidth(4, 26 * 256);
+        sheet.setColumnWidth(5, 26 * 256);
+        sheet.setColumnWidth(6, 26 * 256);
+        sheet.setColumnWidth(7, 26 * 256);
+        sheet.setColumnWidth(8, 40 * 256);
+        sheet.setColumnWidth(9, 40 * 256);
+        sheet.setColumnWidth(10, 26 * 256);
+        sheet.setColumnWidth(11, 26 * 256);
+        sheet.setColumnWidth(12, 40 * 256);
+        sheet.setColumnWidth(13, 40 * 256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+        style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+//        Font headerFont = wb.createFont();
+//        headerFont.setFontName("Arial");
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setBold(false);
+//        headerFont.setColor(IndexedColors.BLACK.getIndex());
+//        style.setFont(headerFont);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("位号");
+        row0.createCell(3).setCellValue("设备名称");
+        row0.createCell(4).setCellValue("使用证号码");
+        row0.createCell(5).setCellValue("检验单位");
+        row0.createCell(6).setCellValue("定期检验日期");
+        row0.createCell(7).setCellValue("安全状况等级");
+        row0.createCell(8).setCellValue("下次定期检验日期");
+        row0.createCell(9).setCellValue("定期检验报告编号");
+
+        row0.createCell(10).setCellValue("年度检查日期");
+        row0.createCell(11).setCellValue("年度检查结论");
+        row0.createCell(12).setCellValue("下次年度检查日期");
+        row0.createCell(13).setCellValue("年度检查报告编号");
+        row0.createCell(14).setCellValue("备注");
+
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevYlrq t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getDevno());
+            row.createCell(3).setCellValue(t.getDevname());
+            row.createCell(4).setCellValue(t.getUseno());
+            row.createCell(5).setCellValue(t.getCheckUnit());
+            if (t.getWarnDate() != null) {
+                row.createCell(6).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+            row.createCell(7).setCellValue(t.getSafeClass());
+            if (t.getNextWarnDate() != null) {
+                row.createCell(8).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            row.createCell(9).setCellValue(t.getReportNo());
+            if (t.getYearWarnDate() != null) {
+                row.createCell(10).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getYearWarnDate()));
+            }
+            row.createCell(11).setCellValue(t.getCheckConclusion());
+            if (t.getYearNextWarnDate() != null) {
+                row.createCell(12).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getYearNextWarnDate()));
+            }
+            row.createCell(13).setCellValue(t.getYearReportNo());
+            row.createCell(14).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+    }
+    private void replaceDetailYrgd(SXSSFWorkbook wb) {
+        List<TSpecdevYlgd> list = tSpecdevYlgdMapper.selectExpiredYlgd();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("压力管道");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12 * 256);
+        sheet.setColumnWidth(1, 26 * 256);
+        sheet.setColumnWidth(2, 26 * 256);
+        sheet.setColumnWidth(3, 26 * 256);
+        sheet.setColumnWidth(4, 26 * 256);
+        sheet.setColumnWidth(5, 26 * 256);
+        sheet.setColumnWidth(6, 26 * 256);
+        sheet.setColumnWidth(7, 26 * 256);
+        sheet.setColumnWidth(8, 40 * 256);
+        sheet.setColumnWidth(9, 40 * 256);
+        sheet.setColumnWidth(10, 26 * 256);
+        sheet.setColumnWidth(11, 26 * 256);
+        sheet.setColumnWidth(12, 40 * 256);
+        sheet.setColumnWidth(13, 40 * 256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+
+//        Font headerFont = wb.createFont();
+//        headerFont.setFontName("Arial");
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setBold(false);
+//        headerFont.setColor(IndexedColors.BLACK.getIndex());
+//        style.setFont(headerFont);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("管道名称");
+        row0.createCell(3).setCellValue("管道编号");
+        row0.createCell(4).setCellValue("使用登记表编号");
+        row0.createCell(5).setCellValue("检验单位");
+        row0.getCell(5).setCellStyle(style);
+        row0.createCell(6).setCellValue("定期检验日期");
+        row0.getCell(6).setCellStyle(style);
+        row0.createCell(7).setCellValue("安全状况等级");
+        row0.getCell(7).setCellStyle(style);
+        row0.createCell(8).setCellValue("定期检验报告编号");
+        row0.getCell(8).setCellStyle(style);
+        row0.createCell(9).setCellValue("下次定期检验日期");
+        row0.getCell(9).setCellStyle(style);
+
+        row0.createCell(10).setCellValue("年度检查日期");
+        row0.getCell(10).setCellStyle(style);
+        row0.createCell(11).setCellValue("年度检查结论");
+        row0.getCell(11).setCellStyle(style);
+        row0.createCell(12).setCellValue("下次年度检查日期");
+        row0.getCell(12).setCellStyle(style);
+        row0.createCell(13).setCellValue("年度检查报告编号");
+        row0.getCell(13).setCellStyle(style);
+        row0.createCell(14).setCellValue("备注");
+        row0.getCell(14).setCellStyle(style);
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevYlgd t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getDevname());
+            row.createCell(3).setCellValue(t.getDevno());
+            row.createCell(4).setCellValue(t.getUseno());
+            row.createCell(5).setCellValue(t.getCheckUnit());
+            if (t.getWarnDate() != null) {
+                row.createCell(6).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+            row.createCell(7).setCellValue(t.getSafeClass());
+            row.createCell(8).setCellValue(t.getReportNo());
+            if (t.getNextWarnDate() != null) {
+                row.createCell(9).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            if (t.getYearWarnDate() != null) {
+                row.createCell(10).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getYearWarnDate()));
+            }
+            row.createCell(11).setCellValue(t.getCheckConclusion());
+            if (t.getYearNextWarnDate() != null) {
+                row.createCell(12).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getYearNextWarnDate()));
+            }
+            row.createCell(13).setCellValue(t.getYearReportNo());
+            row.createCell(14).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+
+    }
+    private void replaceDetailGl(SXSSFWorkbook wb) {
+        List<TSpecdevGl> list = tSpecdevGlMapper.selectExpiredGl();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("锅炉");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12*256);
+        sheet.setColumnWidth(1, 26*256);
+        sheet.setColumnWidth(2, 26*256);
+        sheet.setColumnWidth(3, 26*256);
+        sheet.setColumnWidth(4, 26*256);
+        sheet.setColumnWidth(5, 26*256);
+        sheet.setColumnWidth(6, 26*256);
+        sheet.setColumnWidth(7, 26*256);
+        sheet.setColumnWidth(8, 40*256);
+        sheet.setColumnWidth(9, 40*256);
+        sheet.setColumnWidth(10, 26*256);
+        sheet.setColumnWidth(11, 26*256);
+        sheet.setColumnWidth(12, 40*256);
+        sheet.setColumnWidth(13, 40*256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+
+//        Font headerFont = wb.createFont();
+//        headerFont.setFontName("Arial");
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setBold(false);
+//        headerFont.setColor(IndexedColors.BLACK.getIndex());
+//        style.setFont(headerFont);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("设备位号");
+        row0.createCell(3).setCellValue("设备名称");
+        row0.createCell(4).setCellValue("使用证号码");
+        row0.createCell(5).setCellValue("检验单位");row0.getCell(5).setCellStyle(style);
+        row0.createCell(6).setCellValue("本次内部检验日期");row0.getCell(6).setCellStyle(style);
+        row0.createCell(7).setCellValue("内部检验结论");row0.getCell(7).setCellStyle(style);
+        row0.createCell(8).setCellValue("内部检验报告编号");row0.getCell(8).setCellStyle(style);
+        row0.createCell(9).setCellValue("下次内部检验日期");row0.getCell(9).setCellStyle(style);
+
+        row0.createCell(10).setCellValue("本次外部检验日期");row0.getCell(10).setCellStyle(style);
+        row0.createCell(11).setCellValue("外部检验结论");row0.getCell(11).setCellStyle(style);
+        row0.createCell(12).setCellValue("外部检验报告编号");row0.getCell(12).setCellStyle(style);
+        row0.createCell(13).setCellValue("下次外部检验日期");row0.getCell(13).setCellStyle(style);
+        row0.createCell(14).setCellValue("备注");row0.getCell(14).setCellStyle(style);
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevGl t: list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getDevno());
+            row.createCell(3).setCellValue(t.getDevname());
+            row.createCell(4).setCellValue(t.getUseno());
+            row.createCell(5).setCellValue(t.getCheckUnit());
+            if (t.getWarnDate()!= null){
+                row.createCell(6).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+
+            row.createCell(7).setCellValue(t.getCheckConclusion());
+            row.createCell(8).setCellValue(t.getReportNo());
+            if (t.getNextWarnDate()!= null){
+                row.createCell(9).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            if (t.getOutWarnDate()!= null){
+                row.createCell(10).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getOutWarnDate()));
+            }
+            row.createCell(11).setCellValue(t.getOutCheckConclusion());
+            row.createCell(12).setCellValue(t.getOutReportNo());
+            if (t.getOutNextWarnDate()!= null){
+                row.createCell(13).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getOutNextWarnDate()));
+            }
+            row.createCell(14).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+    }
+    private void replaceDetailDt(SXSSFWorkbook wb) {
+        List<TSpecdevDt> list = tSpecdevDtMapper.selectExpiredDt();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("电梯");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12 * 256);
+        sheet.setColumnWidth(1, 26 * 256);
+        sheet.setColumnWidth(2, 26 * 256);
+        sheet.setColumnWidth(3, 26 * 256);
+        sheet.setColumnWidth(4, 26 * 256);
+        sheet.setColumnWidth(5, 26 * 256);
+        sheet.setColumnWidth(6, 26 * 256);
+        sheet.setColumnWidth(7, 26 * 256);
+        sheet.setColumnWidth(8, 40 * 256);
+        sheet.setColumnWidth(9, 40 * 256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+
+//        Font headerFont = wb.createFont();
+//        headerFont.setFontName("Arial");
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setBold(false);
+//        headerFont.setColor(IndexedColors.BLACK.getIndex());
+//        style.setFont(headerFont);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("档案号");
+        row0.createCell(3).setCellValue("型号");
+        row0.createCell(4).setCellValue("使用地点");
+        row0.createCell(5).setCellValue("检验日期");
+        row0.getCell(5).setCellStyle(style);
+        row0.createCell(6).setCellValue("检验单位");
+        row0.getCell(6).setCellStyle(style);
+        row0.createCell(7).setCellValue("报告编号");
+        row0.getCell(7).setCellStyle(style);
+        row0.createCell(8).setCellValue("下次检验日期");
+        row0.getCell(8).setCellStyle(style);
+        row0.createCell(9).setCellValue("定期检验结论");
+        row0.getCell(9).setCellStyle(style);
+        row0.createCell(10).setCellValue("备注");
+        row0.getCell(10).setCellStyle(style);
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevDt t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getDocno());
+            row.createCell(3).setCellValue(t.getModel());
+            row.createCell(4).setCellValue(t.getLocation());
+            if (t.getWarnDate() != null) {
+                row.createCell(5).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+            row.createCell(6).setCellValue(t.getCheckUnit());
+            row.createCell(7).setCellValue(t.getReportNo());
+            if (t.getNextWarnDate() != null) {
+                row.createCell(8).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            row.createCell(9).setCellValue(t.getPerTestConclusion());
+            row.createCell(10).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+    }
+    private void replaceDetailDzsb(SXSSFWorkbook wb) {
+        List<TSpecdevDzsb> list = tSpecdevDzsbMapper.selectExpiredDzsb();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("起重机械");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12 * 256);
+        sheet.setColumnWidth(1, 26 * 256);
+        sheet.setColumnWidth(2, 26 * 256);
+        sheet.setColumnWidth(3, 26 * 256);
+        sheet.setColumnWidth(4, 26 * 256);
+        sheet.setColumnWidth(5, 26 * 256);
+        sheet.setColumnWidth(6, 26 * 256);
+        sheet.setColumnWidth(7, 26 * 256);
+        sheet.setColumnWidth(8, 40 * 256);
+        sheet.setColumnWidth(9, 40 * 256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+//        Font headerFont = wb.createFont();
+//        headerFont.setFontName("Arial");
+//        headerFont.setFontHeightInPoints((short) 12);
+//        headerFont.setBold(false);
+//        headerFont.setColor(IndexedColors.BLACK.getIndex());
+//        style.setFont(headerFont);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("设备位号");
+        row0.createCell(3).setCellValue("档案号");
+        row0.createCell(4).setCellValue("设备名称");
+        row0.createCell(5).setCellValue("检验单位");
+        row0.getCell(5).setCellStyle(style);
+        row0.createCell(6).setCellValue("检验日期");
+        row0.getCell(6).setCellStyle(style);
+        row0.createCell(7).setCellValue("报告编号");
+        row0.getCell(7).setCellStyle(style);
+        row0.createCell(8).setCellValue("下次检验日期");
+        row0.getCell(8).setCellStyle(style);
+        row0.createCell(9).setCellValue("定期检验结论");
+        row0.getCell(9).setCellStyle(style);
+        row0.createCell(10).setCellValue("备注");
+        row0.getCell(10).setCellStyle(style);
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevDzsb t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getDevno());
+            row.createCell(3).setCellValue(t.getDocno());
+            row.createCell(4).setCellValue(t.getDevname());
+            row.createCell(5).setCellValue(t.getCheckUnit());
+            if (t.getWarnDate() != null) {
+                row.createCell(6).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+            row.createCell(7).setCellValue(t.getReportNo());
+            if (t.getNextWarnDate() != null) {
+                row.createCell(8).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            row.createCell(9).setCellValue(t.getPerTestConclusion());
+            row.createCell(10).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+    }
+    private void replaceDetailCc(SXSSFWorkbook wb) {
+        List<TSpecdevCc> list = tSpecdevCcMapper.selectExpiredCc();
+        //创建sheet页
+        Sheet sheet = wb.createSheet("叉车");
+        //设置列的宽度,第一个参数为列的序号,从0开始,第二参数为列宽,单位1/256个字节
+        sheet.setColumnWidth(0, 12 * 256);
+        sheet.setColumnWidth(1, 26 * 256);
+        sheet.setColumnWidth(2, 26 * 256);
+        sheet.setColumnWidth(3, 26 * 256);
+        sheet.setColumnWidth(4, 26 * 256);
+        sheet.setColumnWidth(5, 26 * 256);
+        sheet.setColumnWidth(6, 26 * 256);
+        sheet.setColumnWidth(7, 26 * 256);
+        sheet.setColumnWidth(8, 40 * 256);
+        //设置开始行和开始列
+
+        Row row0 = sheet.createRow(0);
+        CellStyle style = wb.createCellStyle();
+        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+        Cell cell0 = row0.createCell(0);
+        row0.createCell(0).setCellValue("序号");
+        row0.createCell(1).setCellValue("装置");
+        row0.createCell(2).setCellValue("车牌号");
+        row0.createCell(3).setCellValue("档案号");
+        row0.createCell(4).setCellValue("检验日期");
+        row0.createCell(5).setCellValue("下次检验日期");
+        row0.createCell(6).setCellValue("报告编号");
+        row0.createCell(7).setCellValue("定期检验结论");
+        row0.createCell(8).setCellValue("备注");
+        //填充数据
+        int rowIndex = 1;
+        int columnIndex = 1;
+        for (TSpecdevCc t : list
+        ) {
+            Row row = sheet.createRow(rowIndex);
+            row.createCell(0).setCellValue(t.getId());
+            row.createCell(1).setCellValue(t.getPlantCode());
+            row.createCell(2).setCellValue(t.getCarNo());
+            row.createCell(3).setCellValue(t.getDocno());
+            if (t.getWarnDate() != null) {
+                row.createCell(4).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getWarnDate()));
+            }
+            if (t.getNextWarnDate() != null) {
+                row.createCell(5).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(t.getNextWarnDate()));
+            }
+            row.createCell(6).setCellValue(t.getReportNo());
+            row.createCell(7).setCellValue(t.getPerTestConclusion());
+            row.createCell(8).setCellValue(t.getRemarks());
+            rowIndex++;
+        }
+    }
+
+
 }

+ 158 - 63
master/src/main/resources/mybatis/sems/TSpecdevCcMapper.xml

@@ -1,57 +1,57 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.project.sems.mapper.TSpecdevCcMapper">
 
     <resultMap type="TSpecdevCc" id="TSpecdevCcResult">
-        <result property="id"    column="id"    />
-        <result property="plantCode"    column="plant_code"    />
-        <result property="unit"    column="unit"    />
-        <result property="carNo"    column="car_no"    />
-        <result property="devname"    column="devname"    />
-        <result property="devno"    column="devno"    />
-        <result property="submitdate"    column="submitdate"    />
-        <result property="status"    column="status"    />
-        <result property="delFlag"    column="del_flag"    />
-        <result property="createrCode"    column="creater_code"    />
-        <result property="createdate"    column="createdate"    />
-        <result property="updaterCode"    column="updater_code"    />
-        <result property="updatedate"    column="updatedate"    />
-        <result property="deptId"    column="dept_id"    />
-        <result property="remarks"    column="remarks"    />
-        <result property="approveStatus"    column="approve_status"    />
-        <result property="regno"    column="regno"    />
-        <result property="useno"    column="useno"    />
-        <result property="warnDate"    column="warn_date"    />
-        <result property="warnCycle"    column="warn_cycle"    />
-        <result property="nextWarnDate"    column="next_warn_date"    />
-        <result property="warnFlag"    column="warn_flag"    />
-        <result property="createUnit"    column="create_unit"    />
-        <result property="checkStrategy"    column="check_strategy"    />
-        <result property="firstWarnDate"    column="first_warn_date"    />
-        <result property="checkUnit"    column="check_unit"    />
-        <result property="docno"    column="docno"    />
-        <result property="approveTime"    column="approve_time"    />
-        <result property="changeTime"    column="change_time"    />
-        <result property="engineNo"    column="engine_no"    />
-        <result property="color"    column="color"    />
-        <result property="capacity"    column="capacity"    />
-        <result property="model"    column="model"    />
-        <result property="engineType"    column="engine_type"    />
-        <result property="devClass"    column="dev_class"    />
-        <result property="exUnit"    column="ex_unit"    />
-        <result property="useDept"    column="use_dept"    />
-        <result property="engineer"    column="engineer"    />
-        <result property="exGrade"    column="ex_grade"    />
-        <result property="reportNo"    column="report_no"    />
-        <result property="frameNo"    column="frame_no"    />
-        <result property="productNo"    column="product_no"    />
-        <result property="assetOwner"    column="asset_owner"    />
-        <result property="hiFlag" column="hiFlag" />
-        <result property="perTestConclusion" column="per_test_conclusion" />
+        <result property="id" column="id"/>
+        <result property="plantCode" column="plant_code"/>
+        <result property="unit" column="unit"/>
+        <result property="carNo" column="car_no"/>
+        <result property="devname" column="devname"/>
+        <result property="devno" column="devno"/>
+        <result property="submitdate" column="submitdate"/>
+        <result property="status" column="status"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createrCode" column="creater_code"/>
+        <result property="createdate" column="createdate"/>
+        <result property="updaterCode" column="updater_code"/>
+        <result property="updatedate" column="updatedate"/>
+        <result property="deptId" column="dept_id"/>
+        <result property="remarks" column="remarks"/>
+        <result property="approveStatus" column="approve_status"/>
+        <result property="regno" column="regno"/>
+        <result property="useno" column="useno"/>
+        <result property="warnDate" column="warn_date"/>
+        <result property="warnCycle" column="warn_cycle"/>
+        <result property="nextWarnDate" column="next_warn_date"/>
+        <result property="warnFlag" column="warn_flag"/>
+        <result property="createUnit" column="create_unit"/>
+        <result property="checkStrategy" column="check_strategy"/>
+        <result property="firstWarnDate" column="first_warn_date"/>
+        <result property="checkUnit" column="check_unit"/>
+        <result property="docno" column="docno"/>
+        <result property="approveTime" column="approve_time"/>
+        <result property="changeTime" column="change_time"/>
+        <result property="engineNo" column="engine_no"/>
+        <result property="color" column="color"/>
+        <result property="capacity" column="capacity"/>
+        <result property="model" column="model"/>
+        <result property="engineType" column="engine_type"/>
+        <result property="devClass" column="dev_class"/>
+        <result property="exUnit" column="ex_unit"/>
+        <result property="useDept" column="use_dept"/>
+        <result property="engineer" column="engineer"/>
+        <result property="exGrade" column="ex_grade"/>
+        <result property="reportNo" column="report_no"/>
+        <result property="frameNo" column="frame_no"/>
+        <result property="productNo" column="product_no"/>
+        <result property="assetOwner" column="asset_owner"/>
+        <result property="hiFlag" column="hiFlag"/>
+        <result property="perTestConclusion" column="per_test_conclusion"/>
         <result property="isRepeat" column="is_repeat"/>
-        <result property="plantMaint"    column="plant_maint"    />
+        <result property="plantMaint" column="plant_maint"/>
     </resultMap>
 
     <sql id="selectTSpecdevCcVo">
@@ -67,22 +67,58 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                d.creater_code,
                d.createdate,
                d.plant_maint,
-               d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.create_unit, d.check_strategy, d.first_warn_date, d.check_unit, d.docno, d.approve_time, d.change_time, d.engine_no, d.color, d.capacity, d.model, d.engine_type, d.dev_class, d.ex_unit, d.use_dept, d.engineer, d.ex_grade, d.report_no, d.frame_no, d.product_no, d.asset_owner ,s.dept_name,
-        (SELECT COUNT(1) from T_SPECHI_CC h  where h.DEV_ID = d.id and HI_TYPE = 0 ) as hiFlag, per_test_conclusion
-                ,d.is_repeat
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.create_unit,
+               d.check_strategy,
+               d.first_warn_date,
+               d.check_unit,
+               d.docno,
+               d.approve_time,
+               d.change_time,
+               d.engine_no,
+               d.color,
+               d.capacity,
+               d.model,
+               d.engine_type,
+               d.dev_class,
+               d.ex_unit,
+               d.use_dept,
+               d.engineer,
+               d.ex_grade,
+               d.report_no,
+               d.frame_no,
+               d.product_no,
+               d.asset_owner,
+               s.dept_name,
+               (SELECT COUNT(1) from T_SPECHI_CC h where h.DEV_ID = d.id and HI_TYPE = 0) as hiFlag,
+               per_test_conclusion
+                ,
+               d.is_repeat
         from t_specdev_cc d
-      left join sys_dept s on s.dept_id = d.dept_id
+                 left join sys_dept s on s.dept_id = d.dept_id
     </sql>
 
     <select id="selectTSpecdevCcList" parameterType="TSpecdevCc" resultMap="TSpecdevCcResult">
         <include refid="selectTSpecdevCcVo"/>
         <where>
-            <if test="plantCode != null  and plantCode != ''"> and plant_code like concat(concat('%',  #{plantCode}), '%')</if>
-            <if test="unit != null  and unit != ''"> and unit  like concat(concat('%',  #{unit}), '%')</if>
-            <if test="carNo != null  and carNo != ''"> and car_no like concat(concat('%', #{carNo}), '%')</if>
-            <if test="devname != null  and devname != ''"> and devname like concat(concat('%', #{devname}), '%')</if>
-            <if test="devno != null  and devno != ''"> and devno like concat(concat('%', #{devno}), '%')</if>
-            <if test="status != null "> and d.status = #{status}</if>
+            <if test="plantCode != null  and plantCode != ''">and plant_code like concat(concat('%', #{plantCode}),
+                '%')
+            </if>
+            <if test="unit != null  and unit != ''">and unit like concat(concat('%', #{unit}), '%')</if>
+            <if test="carNo != null  and carNo != ''">and car_no like concat(concat('%', #{carNo}), '%')</if>
+            <if test="devname != null  and devname != ''">and devname like concat(concat('%', #{devname}), '%')</if>
+            <if test="devno != null  and devno != ''">and devno like concat(concat('%', #{devno}), '%')</if>
+            <if test="status != null ">and d.status = #{status}</if>
             <if test="approveStatus != null ">and approve_status = #{approveStatus}</if>
             <if test="warnFlag != null ">and warn_Flag = #{warnFlag}</if>
             <if test="searchValue != null  and searchValue != ''">
@@ -95,7 +131,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             </if>
             <if test="isRepeat != null  and isRepeat != ''">
                 <if test="isRepeat == 2 ">
-                  and  (d.REGNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
+                    and (d.REGNO, d.PLANT_CODE, d.DEL_FLAG, d.APPROVE_STATUS) IN (
                     SELECT REGNO, PLANT_CODE, DEL_FLAG, APPROVE_STATUS
                     FROM T_SPECDEV_CC
                     WHERE DEL_FLAG = 0 AND APPROVE_STATUS = 0
@@ -108,7 +144,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         <!-- 数据范围过滤 -->
         ${params.dataScopePlant}
-        order by d.is_repeat desc, d.plant_code asc , d.unit,  d.id
+        order by d.is_repeat desc, d.plant_code asc , d.unit, d.id
+    </select>
+
+
+    <select id="selectExpiredCc" parameterType="TSpecdevCc" resultMap="TSpecdevCcResult">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.car_no,
+               d.devname,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.plant_maint,
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.create_unit,
+               d.check_strategy,
+               d.first_warn_date,
+               d.check_unit,
+               d.docno,
+               d.approve_time,
+               d.change_time,
+               d.engine_no,
+               d.color,
+               d.capacity,
+               d.model,
+               d.engine_type,
+               d.dev_class,
+               d.ex_unit,
+               d.use_dept,
+               d.engineer,
+               d.ex_grade,
+               d.report_no,
+               d.frame_no,
+               d.product_no,
+               d.asset_owner,
+               per_test_conclusion
+                ,
+               d.is_repeat
+        from t_specdev_cc d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
     </select>
 
     <select id="selectTSpecdevCcListByYear" parameterType="TSpecdevCc" resultMap="TSpecdevCcResult">
@@ -352,7 +444,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <update id="deleteTSpecdevCcById" parameterType="Long">
-        update t_specdev_cc set del_flag = 2 where id = #{id}
+        update t_specdev_cc
+        set del_flag = 2
+        where id = #{id}
     </update>
 
     <update id="deleteTSpecdevCcByIds" parameterType="String">
@@ -376,8 +470,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         GROUP BY to_char(t.NEXT_WARN_DATE,'yyyyMM')
     </select>
 
-    <update id="duplicateTSpecdevCc" >
-        UPDATE  T_SPECDEV_CC set DEL_FLAG = 2
+    <update id="duplicateTSpecdevCc">
+        UPDATE T_SPECDEV_CC
+        set DEL_FLAG = 2
         where rowid !=( select max(rowid)
         from T_SPECDEV_CC b
         where b.REGNO = T_SPECDEV_CC.REGNO and b.PLANT_CODE = T_SPECDEV_CC.PLANT_CODE  and T_SPECDEV_CC.DEL_FLAG = 0 and b.DEL_FLAG = 0

+ 10 - 0
master/src/main/resources/mybatis/sems/TSpecdevDtMapper.xml

@@ -92,6 +92,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by d.is_repeat desc, d.plant_code, d.unit ,d.id
     </select>
 
+    <select id="selectExpiredDt" parameterType="TSpecdevDt" resultMap="TSpecdevDtResult">
+        select d.id, d.plant_code,d.plant_maint,d.use_dept, d.unit, d.devname, d.devno, d.createdate, d.submitdate, d.status, d.del_flag, d.creater_code, d.creater_date, d.updater_code, d.updater_date, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.model, d.capacity, d.floor, d.create_unit, d.maint_contractor, d.location, d.check_strategy, d.first_warn_date, d.check_unit, d.docno, d.approve_time, d.change_time, d.report_no
+        from t_specdev_dt d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
+    </select>
+
+
     <select id="selectTSpecdevDtListByYear" parameterType="TSpecdevDt" resultMap="TSpecdevDtResult">
         <include refid="selectTSpecdevDtVo"/>
         <where>

+ 13 - 0
master/src/main/resources/mybatis/sems/TSpecdevDzsbMapper.xml

@@ -91,6 +91,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         ${params.dataScopePlant}
         order by d.is_repeat desc, d.plant_code, d.unit, d.id
     </select>
+
+    <select id="selectExpiredDzsb" parameterType="TSpecdevDzsb" resultMap="TSpecdevDzsbResult">
+        select d.id, d.plant_code, d.unit, d.devname,d.dev_code,d.factory_no, d.devno, d.submitdate, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.plant_maint, d.docno, d.model, d.capacity, d.location, d.create_unit, d.check_strategy, d.year_maint, d.report_no, d.approve_time, d.change_time, d.check_unit, d.engineer, d.is_ex
+        from t_specdev_dzsb d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
+    </select>
+
+
+
+
     <select id="selectTSpecdevDzsbListByYear" parameterType="TSpecdevDzsb" resultMap="TSpecdevDzsbResult">
         <include refid="selectTSpecdevDzsbVo"/>
         <where>

+ 10 - 0
master/src/main/resources/mybatis/sems/TSpecdevGlMapper.xml

@@ -118,6 +118,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         order by d.is_repeat desc, d.plant_code, d.unit, d.id
     </select>
 
+    <select id="selectExpiredGl" parameterType="TSpecdevGl" resultMap="TSpecdevGlResult">
+        select d.id, d.plant_code, d.unit, d.devname, d.devno, d.submitdate, d.status, d.del_flag, d.creater_code, d.createdate, d.updater_code, d.updatedate, d.dept_id, d.remarks, d.approve_status, d.regno, d.useno, d.warn_date, d.warn_cycle, d.next_warn_date, d.warn_flag, d.create_unit, d.burn_mode, d.burn_kind, d.rated_power, d.des_pressure, d.des_temp, d.opt_pressure, d.opt_temp, d.check_unit, d.check_conclusion, d.model, d.water_mode, d.report_no, d.approve_time, d.change_time, d.plant_maint, d.out_warn_date, d.out_next_warn_date, d.out_check_conclusion, d.out_report_no, d.engineer
+        from t_specdev_gl d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
+    </select>
+
+
     <select id="selectTSpecdevGlListByYear" parameterType="TSpecdevGl" resultMap="TSpecdevGlResult">
         <include refid="selectTSpecdevGlVo"/>
         <where>

+ 61 - 0
master/src/main/resources/mybatis/sems/TSpecdevYlgdMapper.xml

@@ -198,6 +198,67 @@
         order by d.is_repeat desc, d.plant_code, d.unit, d.id
     </select>
 
+    <select id="selectExpiredYlgd" parameterType="TSpecdevYlgd" resultMap="TSpecdevYlgdResult">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.devname,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.grade,
+               d.designer,
+               d.installer,
+               d.material,
+               d.dia,
+               d.schedule_no,
+               d.length,
+               d.starting,
+               d.ending,
+               d.des_pressure,
+               d.des_temp,
+               d.opt_pressure,
+               d.opt_temp,
+               d.medium,
+               d.check_conclusion,
+               d.check_unit,
+               d.safe_class,
+               d.report_no,
+               d.approve_time,
+               d.change_time,
+               d.plant_maint,
+               d.engineer,
+               d.weld_number,
+               d.laying_method,
+               d.adiabatic,
+               d.anti_corrosion,
+               d.adiabatic_thickness,
+               d.is_danger,
+               d.install_date,
+               d.year_warn_date,
+               d.year_next_warn_date,
+               d.is_repeat
+        from t_specdev_ylgd d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
+    </select>
+
 
     <select id="selectTSpecdevYlgdListByYear" parameterType="TSpecdevYlgd" resultMap="TSpecdevYlgdResult">
         <include refid="selectTSpecdevYlgdVo"/>

+ 57 - 0
master/src/main/resources/mybatis/sems/TSpecdevYlrqMapper.xml

@@ -162,6 +162,63 @@
         order by d.is_repeat desc, d.plant_code, d.unit, d.id
     </select>
 
+    <select id="selectExpiredYlrq" parameterType="TSpecdevYlrq" resultMap="TSpecdevYlrqResult">
+        select d.id,
+               d.plant_code,
+               d.unit,
+               d.devname,
+               d.factory_no,
+               d.devno,
+               d.submitdate,
+               d.status,
+               d.del_flag,
+               d.creater_code,
+               d.createdate,
+               d.updater_code,
+               d.updatedate,
+               d.dept_id,
+               d.remarks,
+               d.approve_status,
+               d.regno,
+               d.useno,
+               d.warn_date,
+               d.warn_cycle,
+               d.next_warn_date,
+               d.warn_flag,
+               d.plant_maint,
+               d.engineer,
+               d.vessel_type,
+               d.is_key,
+               d.create_unit,
+               d.nation,
+               d.out_size,
+               d.material,
+               d.medium,
+               d.des_pressure,
+               d.des_temp,
+               d.opt_pressure,
+               d.opt_temp,
+               d.check_unit,
+               d.report_no,
+               d.is_danger,
+               d.is_overlife,
+               d.safe_class,
+               d.approve_time,
+               d.change_time,
+               d.des_year,
+               d.year_warn_date,
+               d.check_conclusion,
+               d.year_next_warn_date,
+               d.year_report_no,
+               d.is_repeat
+        from t_specdev_ylrq d
+        where SYSDATE > NEXT_WARN_DATE
+          and DEL_FLAG = 0
+          and STATUS = 1
+        order by d.plant_code asc
+    </select>
+
+
     <select id="selectTSpecdevYlrqListByYear" parameterType="TSpecdevYlrq" resultMap="TSpecdevYlrqResult">
         <include refid="selectTSpecdevYlrqVo"/>
         <where>

+ 1 - 1
master/src/main/resources/mybatis/training/elearn/TElPaperMapper.xml

@@ -39,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectTElPaperVo"/>
         <where>
             <if test="userId != null "> and user_id = #{userId}</if>
-            <if test="staffId != null "> and staff_id = #{staffId}</if>
+            <if test="staffId != null and staffId != '' "> and staff_id = #{staffId}</if>
             <if test="examId != null "> and exam_id = #{examId}</if>
             <if test="title != null  and title != ''"> and title like concat(concat('%', #{title}), '%')</if>
             <if test="totalTime != null "> and total_time = #{totalTime}</if>

+ 11 - 5
ui/src/views/sems/specReport/index.vue

@@ -36,12 +36,18 @@
       <el-table-column label="报告名" align="center" prop="reportName" :show-overflow-tooltip="true"/>
       <el-table-column label="报告" align="center" prop="reportUrl" :show-overflow-tooltip="true">
         <template slot-scope="scope">
-          <a  class="link-type"  @click="handleDownload(scope.row)">
+          <a  class="link-type"  @click="handleDownload(scope.row.reportUrl)">
             <span>{{ getFileName(scope.row.reportUrl) }}</span>
           </a>
         </template>
       </el-table-column>
-      <el-table-column label="明细" align="center" prop="detailUrl" :show-overflow-tooltip="true"/>
+      <el-table-column label="明细" align="center" prop="detailUrl" :show-overflow-tooltip="true">
+        <template slot-scope="scope">
+          <a  class="link-type"  @click="handleDownload(scope.row.detailUrl)">
+            <span>{{ getFileName(scope.row.detailUrl) }}</span>
+          </a>
+        </template>
+      </el-table-column>
       <el-table-column label="创建时间" align="center" prop="createdate" width="100">
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.createdate, '{y}-{m}-{d}') }}</span>
@@ -358,9 +364,9 @@ export default {
           this.$refs.upload.submit();
       },
     /** 文件下载处理 */
-    handleDownload(row) {
-      var name = this.getFileName(row.reportUrl)
-      var url = row.reportUrl
+    handleDownload(rowurl) {
+      var name = this.getFileName(rowurl)
+      var url = rowurl
       var suffix = url.substring(url.lastIndexOf("."), url.length);
       const a = document.createElement('a')
       a.setAttribute('download', name)