Browse Source

Merge branch 'fu-dev' of uskycloud/usky-modules into server-165

fuyuchuan 11 months ago
parent
commit
2c37c23398

+ 1 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/controller/web/PatrolInspectionRecordController.java

@@ -143,6 +143,7 @@ public class PatrolInspectionRecordController {
         List<PatrolInspectionRecordExportVo> list = patrolInspectionRecordService.exportImage(areaName, siteName, name, planType, startDateTime, endDateTime, idList);
         ExcelUtilImage<PatrolInspectionRecordExportVo> util = new ExcelUtilImage<PatrolInspectionRecordExportVo>(PatrolInspectionRecordExportVo.class);
         util.exportExcel(response, list, "巡检记录", "巡检记录");
+//        patrolInspectionRecordService.exportImage(response,areaName, siteName, name, planType, startDateTime, endDateTime, idList);
     }
 }
 

+ 2 - 1
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/PatrolInspectionRecordService.java

@@ -47,6 +47,7 @@ public interface PatrolInspectionRecordService extends CrudService<PatrolInspect
     List<PatrolInspectionRecordExportVo> exportImage(String areaName, String siteName, String name,
                                                      Integer planType, String startDateTime,
                                                      String endDateTime, String idList);
-    /*void exportImage(HttpServletResponse response, String areaName, String siteName, String name, Integer planType,
+
+/*    void exportImage(HttpServletResponse response, String areaName, String siteName, String name, Integer planType,
                             String startDateTime, String endDateTime, String idList) throws IOException;*/
 }

+ 283 - 0
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/impl/PatrolInspectionRecordServiceImpl.java

@@ -474,6 +474,7 @@ public class PatrolInspectionRecordServiceImpl extends AbstractCrudService<Patro
             patrolInspectionRecordExportVo.setEndDate(patrolInspectionRecordList.get(i).getEndDate().format(df));
             patrolInspectionRecordExportVo.setCreateTime(patrolInspectionRecordList.get(i).getCreateTime().format(df));
             patrolInspectionRecordExportVo.setRemarks(patrolInspectionRecordList.get(i).getRemarks());
+
             patrolInspectionRecordExportVo.setContentTitle(getContentTitle(patrolInspectionRecordList.get(i).getId()));
             patrolInspectionRecordExportVo.setSubmissionMethod(getSubmissionMethod(patrolInspectionRecordList.get(i).getId()));
             patrolInspectionRecordExportVo.setOptionName(getOptionName(patrolInspectionRecordList.get(i).getId()));
@@ -511,6 +512,288 @@ public class PatrolInspectionRecordServiceImpl extends AbstractCrudService<Patro
         return list;
     }
 
+
+    /*public void exportImage(HttpServletResponse response, String areaName, String siteName, String name, Integer planType,
+                            String startDateTime, String endDateTime, String idList) throws IOException {
+        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        String userType = null;
+        if (loginUser != null && !"".equals(loginUser)) {
+            userType = loginUser.getUserType();
+        }
+        LambdaQueryWrapper<PatrolInspectionRecord> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(PatrolInspectionRecord::getTenantId, SecurityUtils.getTenantId())
+                .like(StringUtils.isNotBlank(areaName), PatrolInspectionRecord::getAreaName, areaName)
+                .like(StringUtils.isNotBlank(siteName), PatrolInspectionRecord::getSiteName, siteName)
+                .like(StringUtils.isNotBlank(name), PatrolInspectionRecord::getName, name)
+                .eq(planType != null && planType != 0, PatrolInspectionRecord::getPlanType, planType)
+                .between(StringUtils.isNotBlank(startDateTime) && StringUtils.isNotBlank(endDateTime), PatrolInspectionRecord::getCreateTime, startDateTime, endDateTime)
+                .eq("00".equals(userType), PatrolInspectionRecord::getCreator, SecurityUtils.getUsername());
+        if (StringUtils.isNotBlank(idList)) {
+            List<Integer> listId = new ArrayList<>();
+            String[] idArray = idList.split(",");
+            for (int i = 0; i < idArray.length; i++) {
+                listId.add(Integer.parseInt(idArray[i]));
+            }
+            queryWrapper.in(PatrolInspectionRecord::getId, listId);
+        }
+        queryWrapper.orderByDesc(PatrolInspectionRecord::getId);
+        List<PatrolInspectionRecord> patrolInspectionRecordList = this.list(queryWrapper);
+        List<PatrolInspectionRecordExportVo> list = new ArrayList<>();
+        for (int i = 0; i < patrolInspectionRecordList.size(); i++) {
+            PatrolInspectionRecordExportVo patrolInspectionRecordExportVo = new PatrolInspectionRecordExportVo();
+            patrolInspectionRecordExportVo.setXh(i + 1);
+            patrolInspectionRecordExportVo.setId(patrolInspectionRecordList.get(i).getId());
+            patrolInspectionRecordExportVo.setSiteNubmber(patrolInspectionRecordList.get(i).getSiteNubmber());
+            patrolInspectionRecordExportVo.setSiteType(patrolInspectionRecordList.get(i).getSiteType());
+            patrolInspectionRecordExportVo.setAreaName(patrolInspectionRecordList.get(i).getAreaName());
+            patrolInspectionRecordExportVo.setSiteName(patrolInspectionRecordList.get(i).getSiteName());
+            patrolInspectionRecordExportVo.setName(patrolInspectionRecordList.get(i).getName());
+            patrolInspectionRecordExportVo.setPhone(patrolInspectionRecordList.get(i).getPhone());
+            patrolInspectionRecordExportVo.setPlanType(patrolInspectionRecordList.get(i).getPlanType());
+            patrolInspectionRecordExportVo.setLongitude(patrolInspectionRecordList.get(i).getLongitude());
+            patrolInspectionRecordExportVo.setLatitude(patrolInspectionRecordList.get(i).getLatitude());
+            patrolInspectionRecordExportVo.setStartDate(patrolInspectionRecordList.get(i).getStartDate().format(df));
+            patrolInspectionRecordExportVo.setEndDate(patrolInspectionRecordList.get(i).getEndDate().format(df));
+            patrolInspectionRecordExportVo.setCreateTime(patrolInspectionRecordList.get(i).getCreateTime().format(df));
+            LambdaQueryWrapper<PatrolInspectionRecordPicture> queryWrapperJpg = Wrappers.lambdaQuery();//导出图片
+            queryWrapperJpg.select(PatrolInspectionRecordPicture::getPictureUrl)
+                    .eq(PatrolInspectionRecordPicture::getRecordId, patrolInspectionRecordList.get(i).getId());
+            List<PatrolInspectionRecordPicture> pictures = orphansInspectionRecordPictureMapper.selectList(queryWrapperJpg);
+            if (pictures.size() > 0) {
+                for (int j = 0; j < pictures.size() && j < 5; j++) {
+                    String pictureUrl = pictures.get(j).getPictureUrl();
+                    switch (j) {
+                        case 0:
+                            patrolInspectionRecordExportVo.setImagePath1(pictureUrl);
+                            break;
+                        case 1:
+                            patrolInspectionRecordExportVo.setImagePath2(pictureUrl);
+                            break;
+                        case 2:
+                            patrolInspectionRecordExportVo.setImagePath3(pictureUrl);
+                            break;
+                        case 3:
+                            patrolInspectionRecordExportVo.setImagePath4(pictureUrl);
+                            break;
+                        case 4:
+                            patrolInspectionRecordExportVo.setImagePath5(pictureUrl);
+                            break;
+                        default:
+                            break;
+                    }
+                }
+            }
+            list.add(patrolInspectionRecordExportVo);
+        }
+        XSSFWorkbook workbook = new XSSFWorkbook();
+        XSSFSheet sheet = workbook.createSheet("巡检记录");
+        // 添加列标题行
+        Row headerRow = sheet.createRow(1);
+        String[] headers = {
+                "序号", "地点号码", "地点类型", "区域名称", "地点名称", "巡检人员", "联系电话",
+                "计划类型", "经度", "纬度", "开始时间", "结束时间", "巡检时间", "巡检照片1",
+                "巡检照片2", "巡检照片3", "巡检照片4", "巡检照片5"
+        };
+        // 添加总标题行
+        Row titleRow = sheet.createRow(0);
+        Cell titleCell = titleRow.createCell(0);
+        titleCell.setCellValue("巡检记录");
+        CellStyle titleCellStyle = workbook.createCellStyle();
+        // 设置字体为黑色加粗
+        Font titleFont = workbook.createFont();
+        titleFont.setFontName("宋体");
+        titleFont.setFontHeightInPoints((short) 16);
+        titleFont.setColor(IndexedColors.BLACK.getIndex());
+        titleFont.setBold(true);
+        titleCellStyle.setFont(titleFont);
+        // 设置水平居中和垂直居中
+        titleCellStyle.setAlignment(HorizontalAlignment.CENTER);
+        titleCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        titleCell.setCellStyle(titleCellStyle);
+        titleRow.setHeightInPoints(30);
+        // 合并标题单元格以横跨所有列
+        int totalColumns = headers.length;
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, totalColumns - 1));
+        //设置列标题
+        for (int i = 0; i < headers.length; i++) {
+            Cell cell = headerRow.createCell(i);
+            cell.setCellValue(headers[i]);
+            CellStyle headerCellStyle = workbook.createCellStyle();
+            headerCellStyle.setAlignment(HorizontalAlignment.CENTER);
+            headerCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+            headerCellStyle.setBorderBottom(BorderStyle.THIN);
+            headerCellStyle.setBorderTop(BorderStyle.THIN);
+            headerCellStyle.setBorderLeft(BorderStyle.THIN);
+            headerCellStyle.setBorderRight(BorderStyle.THIN);
+            // 设置背景颜色为灰色
+            headerCellStyle.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
+            headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
+            // 设置字体为白色
+            Font headerFont = workbook.createFont();
+            headerFont.setFontName("宋体");
+            headerFont.setFontHeightInPoints((short) 10);
+            headerFont.setColor(IndexedColors.WHITE.getIndex());
+            headerFont.setBold(true);
+            headerRow.setHeightInPoints(13.5f);
+            headerCellStyle.setFont(headerFont);
+            cell.setCellStyle(headerCellStyle);
+        }
+
+        Row fixedRow = sheet.createRow(list.size() + 3); // 数据行数 + 标题行数(1) + 固定行(1) + 空一行
+        CellStyle fixedCellStyle = workbook.createCellStyle();
+
+        // 创建字体样式
+        Font fixedFont = workbook.createFont();
+        fixedFont.setFontName("宋体");
+        fixedFont.setBold(true);
+        fixedFont.setFontHeightInPoints((short) 12);
+        fixedCellStyle.setFont(fixedFont);
+
+        // 创建“负责人签名”单元格
+        Cell cellSign = fixedRow.createCell(0);
+        cellSign.setCellValue("负责人签名:");
+        cellSign.setCellStyle(fixedCellStyle);
+
+        // 创建“日期”单元格
+        Cell cellDate = fixedRow.createCell(4); // 假设日期单元格在第五列
+        cellDate.setCellValue("日期:");
+        cellDate.setCellStyle(fixedCellStyle);
+
+        // 合并单元格
+//        sheet.addMergedRegion(new CellRangeAddress(list.size() + 2, list.size() + 2, 0, 0)); // 负责人签名
+//        sheet.addMergedRegion(new CellRangeAddress(list.size() + 2, list.size() + 2, 4, 4)); // 日期
+
+        // 设置固定行的高度
+        fixedRow.setHeightInPoints(20);
+
+        // 设置数据行样式
+        CellStyle dataCellStyle = workbook.createCellStyle();
+        Font dataFont = workbook.createFont();
+        dataFont.setFontName("Arial");
+        dataFont.setFontHeightInPoints((short) 10);
+        dataCellStyle.setFont(dataFont);
+        dataCellStyle.setAlignment(HorizontalAlignment.CENTER);
+        dataCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        dataCellStyle.setBorderBottom(BorderStyle.THIN);
+        dataCellStyle.setBorderTop(BorderStyle.THIN);
+        dataCellStyle.setBorderLeft(BorderStyle.THIN);
+        dataCellStyle.setBorderRight(BorderStyle.THIN);
+        // 添加数据
+        for (int i = 0; i < list.size(); i++) {
+            PatrolInspectionRecordExportVo record = list.get(i);
+            Row row = sheet.createRow(i + 2);
+
+            for (int j = 0; j < headers.length; j++) {
+                Cell cell = row.createCell(j);
+                cell.setCellStyle(dataCellStyle);
+
+                // 根据 j 变量来确定应该填充数据的单元格索引
+                switch (j) {
+                    case 0:
+                        cell.setCellValue(record.getXh());
+                        break;
+                    case 1:
+                        cell.setCellValue(record.getSiteNubmber());
+                        break;
+                    case 2:
+                        cell.setCellValue(record.getSiteType() == 1 ? "二维码" : "NFC");
+                        break;
+                    case 3:
+                        cell.setCellValue(record.getAreaName());
+                        break;
+                    case 4:
+                        cell.setCellValue(record.getSiteName());
+                        break;
+                    case 5:
+                        cell.setCellValue(record.getName());
+                        break;
+                    case 6:
+                        cell.setCellValue(record.getPhone());
+                        break;
+                    case 7:
+                        cell.setCellValue(record.getPlanType() == 1 ? "普通计划" : "按次计划");
+                        break;
+                    case 8:
+                        cell.setCellValue(record.getLongitude());
+                        break;
+                    case 9:
+                        cell.setCellValue(record.getLatitude());
+                        break;
+                    case 10:
+                        cell.setCellValue(record.getStartDate());
+                        break;
+                    case 11:
+                        cell.setCellValue(record.getEndDate());
+                        break;
+                    case 12:
+                        cell.setCellValue(record.getCreateTime());
+                        break;
+                    default:
+                        break;
+                }
+                CreationHelper helper = workbook.getCreationHelper();
+                Drawing<?> drawing = sheet.createDrawingPatriarch();
+                ClientAnchor anchor;
+                if (record.getImagePath1() != null || record.getImagePath2() != null
+                        || record.getImagePath3() != null || record.getImagePath4() != null || record.getImagePath5() != null) {
+                    for (int k = 0; k < 5; k++) {
+                        String imagePath = null;
+                        switch (k) {
+                            case 0:
+                                imagePath = record.getImagePath1();
+                                break;
+                            case 1:
+                                imagePath = record.getImagePath2();
+                                break;
+                            case 2:
+                                imagePath = record.getImagePath3();
+                                break;
+                            case 3:
+                                imagePath = record.getImagePath4();
+                                break;
+                            case 4:
+                                imagePath = record.getImagePath5();
+                                break;
+                        }
+
+                        if (imagePath != null) {
+                            byte[] imageBytes = getImageBytes(imagePath);
+                            int pictureIdx = workbook.addPicture(imageBytes, Workbook.PICTURE_TYPE_JPEG);
+
+                            anchor = helper.createClientAnchor();
+                            anchor.setCol1(headers.length - 5 + k);
+                            anchor.setRow1(i + 2);
+
+                            Picture pict = drawing.createPicture(anchor, pictureIdx);
+                            pict.resize(1, 1);
+                        }
+                    }
+                }
+            }
+
+        }
+
+        for (int i = 0; i < headers.length; i++) {
+            sheet.setColumnWidth(i, (int) (16.09 * 256));
+        }
+
+        // 输出Excel文件
+        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
+        response.setHeader("Content-Disposition", "attachment; filename=巡检记录.xlsx");
+        workbook.write(response.getOutputStream());
+        workbook.close();
+    }
+
+    //处理图片
+    public byte[] getImageBytes(String imageUrl) throws IOException {
+        URL url = new URL(imageUrl);
+        BufferedImage image = ImageIO.read(url);
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        ImageIO.write(image, "jpg", baos);
+        return baos.toByteArray();
+    }*/
+
     /**
      * 获取内容选项备注
      *

+ 89 - 172
service-fire/service-fire-biz/src/main/java/com/usky/fire/service/util/ExcelUtilImage.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.core.utils.file.FileTypeUtils;
 import com.ruoyi.common.core.utils.file.ImageUtils;
 import com.ruoyi.common.core.utils.poi.ExcelHandlerAdapter;
 import com.ruoyi.common.core.utils.reflect.ReflectUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Field;
@@ -94,7 +95,7 @@ public class ExcelUtilImage<T> {
             list = new ArrayList();
         }
 
-        this.list = (List)list;
+        this.list = (List) list;
         this.sheetName = sheetName;
         this.type = type;
         this.title = title;
@@ -118,7 +119,7 @@ public class ExcelUtilImage<T> {
             Row titleRow = var10000.createRow(var10001);
             titleRow.setHeightInPoints(30.0F);
             Cell titleCell = titleRow.createCell(0);
-            titleCell.setCellStyle((CellStyle)this.styles.get("title"));
+            titleCell.setCellStyle((CellStyle) this.styles.get("title"));
             titleCell.setCellValue(this.title);
             this.sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), this.fields.size() - 1));
         }
@@ -146,13 +147,13 @@ public class ExcelUtilImage<T> {
                 Map<String, Integer> cellMap = new HashMap();
                 Row heard = sheet.getRow(titleNum);
 
-                for(int i = 0; i < heard.getPhysicalNumberOfCells(); ++i) {
+                for (int i = 0; i < heard.getPhysicalNumberOfCells(); ++i) {
                     Cell cell = heard.getCell(i);
                     if (StringUtils.isNotNull(cell)) {
                         String value = this.getCellValue(heard, i).toString();
                         cellMap.put(value, i);
                     } else {
-                        cellMap.put(String.valueOf((Object)null), i);
+                        cellMap.put(String.valueOf((Object) null), i);
                     }
                 }
 
@@ -160,27 +161,27 @@ public class ExcelUtilImage<T> {
                 Map<Integer, Object[]> fieldsMap = new HashMap();
                 Iterator var24 = fields.iterator();
 
-                while(var24.hasNext()) {
-                    Object[] objects = (Object[])var24.next();
-                    Excel attr = (Excel)objects[1];
-                    Integer column = (Integer)cellMap.get(attr.name());
+                while (var24.hasNext()) {
+                    Object[] objects = (Object[]) var24.next();
+                    Excel attr = (Excel) objects[1];
+                    Integer column = (Integer) cellMap.get(attr.name());
                     if (column != null) {
                         fieldsMap.put(column, objects);
                     }
                 }
 
-                for(int i = titleNum + 1; i <= rows; ++i) {
+                for (int i = titleNum + 1; i <= rows; ++i) {
                     Row row = sheet.getRow(i);
                     if (!this.isRowEmpty(row)) {
                         T entity = null;
                         Iterator var28 = fieldsMap.entrySet().iterator();
 
-                        while(var28.hasNext()) {
-                            Entry<Integer, Object[]> entry = (Entry)var28.next();
-                            Object val = this.getCellValue(row, (Integer)entry.getKey());
+                        while (var28.hasNext()) {
+                            Entry<Integer, Object[]> entry = (Entry) var28.next();
+                            Object val = this.getCellValue(row, (Integer) entry.getKey());
                             entity = entity == null ? this.clazz.newInstance() : entity;
-                            Field field = (Field)((Object[])entry.getValue())[0];
-                            Excel attr = (Excel)((Object[])entry.getValue())[1];
+                            Field field = (Field) ((Object[]) entry.getValue())[0];
+                            Excel attr = (Excel) ((Object[]) entry.getValue())[1];
                             Class<?> fieldType = field.getType();
                             String propertyName;
                             if (String.class == fieldType) {
@@ -188,7 +189,7 @@ public class ExcelUtilImage<T> {
                                 if (StringUtils.endsWith(propertyName, ".0")) {
                                     val = StringUtils.substringBefore(propertyName, ".0");
                                 } else {
-                                    String dateFormat = ((Excel)field.getAnnotation(Excel.class)).dateFormat();
+                                    String dateFormat = ((Excel) field.getAnnotation(Excel.class)).dateFormat();
                                     if (StringUtils.isNotEmpty(dateFormat)) {
                                         val = this.parseDateToStr(dateFormat, val);
                                     } else {
@@ -207,7 +208,7 @@ public class ExcelUtilImage<T> {
                                         if (val instanceof String) {
                                             val = DateUtils.parseDate(val);
                                         } else if (val instanceof Double) {
-                                            val = DateUtil.getJavaDate((Double)val);
+                                            val = DateUtil.getJavaDate((Double) val);
                                         }
                                     } else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
                                         val = Convert.toBool(val, false);
@@ -260,13 +261,14 @@ public class ExcelUtilImage<T> {
     public void importTemplateExcel(HttpServletResponse response, String sheetName, String title) {
         response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
         response.setCharacterEncoding("utf-8");
-        this.init((List)null, sheetName, title, Type.IMPORT);
+        this.init((List) null, sheetName, title, Type.IMPORT);
         this.exportExcel(response);
     }
 
     public void exportExcel(HttpServletResponse response) {
         try {
             this.writeSheet();
+            this.addSignatureAndDate(this.sheet); // 在写入数据后添加签名和日期
             this.wb.write(response.getOutputStream());
         } catch (Exception var6) {
             log.error("导出Excel异常{}", var6.getMessage());
@@ -276,18 +278,41 @@ public class ExcelUtilImage<T> {
 
     }
 
+    public void addSignatureAndDate(Sheet sheet) {
+        try {
+            // 获取最后一行的行号
+            int lastRowNum = sheet.getLastRowNum();
+            // 检查是否需要创建新行,如果最后一行不为空,则在其下创建新行
+            int newRowNum = (lastRowNum == 0 || !isRowEmpty(sheet.getRow(lastRowNum))) ? lastRowNum + 2 : lastRowNum;
+            Row signatureAndDateRow = sheet.createRow(newRowNum);
+            Cell signatureCell = signatureAndDateRow.createCell(0);
+            signatureCell.setCellValue("负责人签名:");
+            Cell dateCell = signatureAndDateRow.createCell(4);
+            dateCell.setCellValue("日期:");
+            CellStyle style = this.wb.createCellStyle();
+            Font font = this.wb.createFont();
+            font.setBold(true);
+            style.setFont(font);
+            signatureCell.setCellStyle(style);
+            dateCell.setCellStyle(style);
+
+        } catch (Exception e) {
+            log.error("Error adding signature and date to the Excel sheet.", e);
+        }
+    }
+
     public void writeSheet() {
-        int sheetNo = Math.max(1, (int)Math.ceil((double)this.list.size() * 1.0D / 65536.0D));
+        int sheetNo = Math.max(1, (int) Math.ceil((double) this.list.size() * 1.0D / 65536.0D));
 
-        for(int index = 0; index < sheetNo; ++index) {
+        for (int index = 0; index < sheetNo; ++index) {
             this.createSheet(sheetNo, index);
             Row row = this.sheet.createRow(this.rownum);
             int column = 0;
             Iterator var5 = this.fields.iterator();
 
-            while(var5.hasNext()) {
-                Object[] os = (Object[])var5.next();
-                Excel excel = (Excel)os[1];
+            while (var5.hasNext()) {
+                Object[] os = (Object[]) var5.next();
+                Excel excel = (Excel) os[1];
                 this.createCell(excel, row, column++);
             }
 
@@ -300,28 +325,7 @@ public class ExcelUtilImage<T> {
     }
 
 
-/*    public void fillExcelData(int index, Row row) {
-        int startNo = index * 65536;
-        int endNo = Math.min(startNo + 65536, this.list.size());
-
-        for(int i = startNo; i < endNo; ++i) {
-            row = this.sheet.createRow(i + 1 + this.rownum - startNo);
-            T vo = this.list.get(i);
-            int column = 0;
-            Iterator var8 = this.fields.iterator();
-
-            while(var8.hasNext()) {
-                Object[] os = (Object[])var8.next();
-                Field field = (Field)os[0];
-                Excel excel = (Excel)os[1];
-                this.addCell(excel, row, vo, field, column++);
-            }
-        }
-    }*/
-
-
-
-/*    public void fillExcelData(int index, Row row) {
+    public void fillExcelData(int index, Row row) {
         int startNo = index * 65536;
         int endNo = Math.min(startNo + 65536, this.list.size());
 
@@ -335,97 +339,11 @@ public class ExcelUtilImage<T> {
                 Object[] os = (Object[]) var8.next();
                 Field field = (Field) os[0];
                 Excel excel = (Excel) os[1];
-                if (excel.isExport()) {
-                    if (field.getType().isAssignableFrom(List.class)) {
-                        // 处理List类型的字段
-                        List<?> listValue = null;
-                        try {
-                            listValue = (List<?>) this.getTargetValue(vo, field, excel);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                        for (Object item : listValue) {
-                            Cell cell = row.createCell(column);
-                            cell.setCellValue(item.toString());
-                            column++;
-                        }
-                    } else {
-                        // 处理非List类型的字段
-                        this.addCell(excel, row, vo, field, column++);
-                    }
-                }
-            }
-        }
-    }*/
-
-        public void fillExcelData(int index, Row row) {
-        int startNo = index * 65536;
-        int endNo = Math.min(startNo + 65536, this.list.size());
-
-        for (int i = startNo; i < endNo; ++i) {
-            row = this.sheet.createRow(i + 1 + this.rownum - startNo);
-            T vo = this.list.get(i);
-            int column = 0;
-            Iterator<Object[]> var8 = this.fields.iterator();
-
-            while (var8.hasNext()) {
-                Object[] os = (Object[]) var8.next();
-                Field field = (Field) os[0];
-                Excel excel = (Excel) os[1];
-                if (excel.isExport()) {
-                    if (field.getType().isAssignableFrom(List.class)) {
-                        // 处理List类型的字段
-                        addListCell(excel, row, vo, field, column);
-                        try {
-                            column += ((List<?>) this.getTargetValue(vo, field, excel)).size();
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                    } else {
-                        // 处理非List类型的字段
-                        addCell(excel, row, vo, field, column++);
-                    }
-                }
-            }
-        }
-    }
-
-    public void addListCell(Excel attr, Row row, T vo, Field field, int column) {
-        try {
-            Object value = this.getTargetValue(vo, field, attr);
-            if (value instanceof List) {
-                List<?> listValue = (List<?>) value;
-                for (int j = 0; j < listValue.size(); j++) {
-                    Cell cell = row.createCell(column + j);
-                    cell.setCellValue(listValue.get(j).toString());
-                }
+                this.addCell(excel, row, vo, field, column++);
             }
-        } catch (Exception e) {
-            log.error("导出Excel失败{}", e);
         }
     }
 
-/*    public Cell addListCell(Excel attr, Row row, T vo, Field field, int column) {
-        Cell cell = row.createCell(column);
-        StringBuilder sb = new StringBuilder();
-        try {
-            Object value = this.getTargetValue(vo, field, attr);
-            if (value instanceof List) {
-                List<?> listValue = (List<?>) value;
-                for (int j = 0; j < listValue.size(); j++) {
-                    sb.append(listValue.get(j).toString());
-                    if (j < listValue.size() - 1) {
-                        sb.append("");
-                    }
-                }
-            }
-            cell.setCellValue(sb.toString());
-        } catch (Exception e) {
-            log.error("导出Excel失败{}", e);
-        }
-        return cell;
-    }*/
-
     private Map<String, CellStyle> createStyles(Workbook wb) {
         Map<String, CellStyle> styles = new HashMap();
         CellStyle style = wb.createCellStyle();
@@ -433,7 +351,7 @@ public class ExcelUtilImage<T> {
         style.setVerticalAlignment(VerticalAlignment.CENTER);
         Font titleFont = wb.createFont();
         titleFont.setFontName("Arial");
-        titleFont.setFontHeightInPoints((short)16);
+        titleFont.setFontHeightInPoints((short) 16);
         titleFont.setBold(true);
         style.setFont(titleFont);
         styles.put("title", style);
@@ -450,18 +368,18 @@ public class ExcelUtilImage<T> {
         style.setBottomBorderColor(IndexedColors.GREY_50_PERCENT.getIndex());
         Font dataFont = wb.createFont();
         dataFont.setFontName("Arial");
-        dataFont.setFontHeightInPoints((short)10);
+        dataFont.setFontHeightInPoints((short) 10);
         style.setFont(dataFont);
         styles.put("data", style);
         style = wb.createCellStyle();
-        style.cloneStyleFrom((CellStyle)styles.get("data"));
+        style.cloneStyleFrom((CellStyle) styles.get("data"));
         style.setAlignment(HorizontalAlignment.CENTER);
         style.setVerticalAlignment(VerticalAlignment.CENTER);
         style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
         style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
         Font headerFont = wb.createFont();
         headerFont.setFontName("Arial");
-        headerFont.setFontHeightInPoints((short)10);
+        headerFont.setFontHeightInPoints((short) 10);
         headerFont.setBold(true);
         headerFont.setColor(IndexedColors.WHITE.getIndex());
         style.setFont(headerFont);
@@ -471,19 +389,19 @@ public class ExcelUtilImage<T> {
         style.setVerticalAlignment(VerticalAlignment.CENTER);
         Font totalFont = wb.createFont();
         totalFont.setFontName("Arial");
-        totalFont.setFontHeightInPoints((short)10);
+        totalFont.setFontHeightInPoints((short) 10);
         style.setFont(totalFont);
         styles.put("total", style);
         style = wb.createCellStyle();
-        style.cloneStyleFrom((CellStyle)styles.get("data"));
+        style.cloneStyleFrom((CellStyle) styles.get("data"));
         style.setAlignment(HorizontalAlignment.LEFT);
         styles.put("data1", style);
         style = wb.createCellStyle();
-        style.cloneStyleFrom((CellStyle)styles.get("data"));
+        style.cloneStyleFrom((CellStyle) styles.get("data"));
         style.setAlignment(HorizontalAlignment.CENTER);
         styles.put("data2", style);
         style = wb.createCellStyle();
-        style.cloneStyleFrom((CellStyle)styles.get("data"));
+        style.cloneStyleFrom((CellStyle) styles.get("data"));
         style.setAlignment(HorizontalAlignment.RIGHT);
         styles.put("data3", style);
         return styles;
@@ -493,7 +411,7 @@ public class ExcelUtilImage<T> {
         Cell cell = row.createCell(column);
         cell.setCellValue(attr.name());
         this.setDataValidation(attr, row, column);
-        cell.setCellStyle((CellStyle)this.styles.get("header"));
+        cell.setCellStyle((CellStyle) this.styles.get("header"));
         return cell;
     }
 
@@ -507,10 +425,10 @@ public class ExcelUtilImage<T> {
             cell.setCellValue(StringUtils.isNull(cellValue) ? attr.defaultValue() : cellValue + attr.suffix());
         } else if (ColumnType.NUMERIC == attr.cellType()) {
             if (StringUtils.isNotNull(value)) {
-                cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : (double)Convert.toInt(value));
+                cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : (double) Convert.toInt(value));
             }
         } else if (ColumnType.IMAGE == attr.cellType()) {
-            ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short)cell.getColumnIndex(), cell.getRow().getRowNum(), (short)(cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1);
+            ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1);
             String imagePath = Convert.toStr(value);
             if (StringUtils.isNotEmpty(imagePath)) {
                 byte[] data = ImageUtils.getImage(imagePath);
@@ -541,7 +459,7 @@ public class ExcelUtilImage<T> {
         if (attr.name().indexOf("注:") >= 0) {
             this.sheet.setColumnWidth(column, 6000);
         } else {
-            this.sheet.setColumnWidth(column, (int)((attr.width() + 0.72D) * 256.0D));
+            this.sheet.setColumnWidth(column, (int) ((attr.width() + 0.72D) * 256.0D));
         }
 
         if (StringUtils.isNotEmpty(attr.prompt()) || attr.combo().length > 0) {
@@ -610,14 +528,14 @@ public class ExcelUtilImage<T> {
         String[] var5 = convertSource;
         int var6 = convertSource.length;
 
-        for(int var7 = 0; var7 < var6; ++var7) {
+        for (int var7 = 0; var7 < var6; ++var7) {
             String item = var5[var7];
             String[] itemArray = item.split("=");
             if (StringUtils.containsAny(separator, propertyValue)) {
                 String[] var10 = propertyValue.split(separator);
                 int var11 = var10.length;
 
-                for(int var12 = 0; var12 < var11; ++var12) {
+                for (int var12 = 0; var12 < var11; ++var12) {
                     String value = var10[var12];
                     if (itemArray[0].equals(value)) {
                         propertyString.append(itemArray[1] + separator);
@@ -638,14 +556,14 @@ public class ExcelUtilImage<T> {
         String[] var5 = convertSource;
         int var6 = convertSource.length;
 
-        for(int var7 = 0; var7 < var6; ++var7) {
+        for (int var7 = 0; var7 < var6; ++var7) {
             String item = var5[var7];
             String[] itemArray = item.split("=");
             if (StringUtils.containsAny(separator, propertyValue)) {
                 String[] var10 = propertyValue.split(separator);
                 int var11 = var10.length;
 
-                for(int var12 = 0; var12 < var11; ++var12) {
+                for (int var12 = 0; var12 < var11; ++var12) {
                     String value = var10[var12];
                     if (itemArray[1].equals(value)) {
                         propertyString.append(itemArray[0] + separator);
@@ -684,7 +602,7 @@ public class ExcelUtilImage<T> {
             } catch (NumberFormatException var6) {
             }
 
-            this.statistics.put(index, (Double)this.statistics.get(index) + temp);
+            this.statistics.put(index, (Double) this.statistics.get(index) + temp);
         }
 
     }
@@ -694,14 +612,13 @@ public class ExcelUtilImage<T> {
             Row row = this.sheet.createRow(this.sheet.getLastRowNum() + 1);
             Set<Integer> keys = this.statistics.keySet();
             Cell cell = row.createCell(0);
-            cell.setCellStyle((CellStyle)this.styles.get("total"));
+            cell.setCellStyle((CellStyle) this.styles.get("total"));
             cell.setCellValue("合计");
             Iterator var4 = keys.iterator();
-
-            while(var4.hasNext()) {
-                Integer key = (Integer)var4.next();
+            while (var4.hasNext()) {
+                Integer key = (Integer) var4.next();
                 cell = row.createCell(key);
-                cell.setCellStyle((CellStyle)this.styles.get("total"));
+                cell.setCellStyle((CellStyle) this.styles.get("total"));
                 cell.setCellValue(DOUBLE_FORMAT.format(this.statistics.get(key)));
             }
 
@@ -719,7 +636,7 @@ public class ExcelUtilImage<T> {
                 String[] var7 = targets;
                 int var8 = targets.length;
 
-                for(int var9 = 0; var9 < var8; ++var9) {
+                for (int var9 = 0; var9 < var8; ++var9) {
                     String name = var7[var9];
                     o = this.getValue(o, name);
                 }
@@ -744,8 +661,8 @@ public class ExcelUtilImage<T> {
 
     private void createExcelField() {
         this.fields = this.getFields();
-        this.fields = (List)this.fields.stream().sorted(Comparator.comparing((objects) -> {
-            return ((Excel)objects[1]).sort();
+        this.fields = (List) this.fields.stream().sorted(Comparator.comparing((objects) -> {
+            return ((Excel) objects[1]).sort();
         })).collect(Collectors.toList());
         this.maxHeight = this.getRowHeight();
     }
@@ -757,29 +674,29 @@ public class ExcelUtilImage<T> {
         tempFields.addAll(Arrays.asList(this.clazz.getDeclaredFields()));
         Iterator var3 = tempFields.iterator();
 
-        while(true) {
+        while (true) {
             Field field;
             do {
                 if (!var3.hasNext()) {
                     return fields;
                 }
 
-                field = (Field)var3.next();
+                field = (Field) var3.next();
                 if (field.isAnnotationPresent(Excel.class)) {
-                    Excel attr = (Excel)field.getAnnotation(Excel.class);
+                    Excel attr = (Excel) field.getAnnotation(Excel.class);
                     if (attr != null && (attr.type() == Type.ALL || attr.type() == this.type)) {
                         field.setAccessible(true);
                         fields.add(new Object[]{field, attr});
                     }
                 }
-            } while(!field.isAnnotationPresent(Excels.class));
+            } while (!field.isAnnotationPresent(Excels.class));
 
-            Excels attrs = (Excels)field.getAnnotation(Excels.class);
+            Excels attrs = (Excels) field.getAnnotation(Excels.class);
             Excel[] excels = attrs.value();
             Excel[] var7 = excels;
             int var8 = excels.length;
 
-            for(int var9 = 0; var9 < var8; ++var9) {
+            for (int var9 = 0; var9 < var8; ++var9) {
                 Excel attr = var7[var9];
                 if (attr != null && (attr.type() == Type.ALL || attr.type() == this.type)) {
                     field.setAccessible(true);
@@ -793,12 +710,12 @@ public class ExcelUtilImage<T> {
         double maxHeight = 0.0D;
 
         Excel excel;
-        for(Iterator var3 = this.fields.iterator(); var3.hasNext(); maxHeight = Math.max(maxHeight, excel.height())) {
-            Object[] os = (Object[])var3.next();
-            excel = (Excel)os[1];
+        for (Iterator var3 = this.fields.iterator(); var3.hasNext(); maxHeight = Math.max(maxHeight, excel.height())) {
+            Object[] os = (Object[]) var3.next();
+            excel = (Excel) os[1];
         }
 
-        return (short)((int)(maxHeight * 20.0D));
+        return (short) ((int) (maxHeight * 20.0D));
     }
 
     public void createWorkbook() {
@@ -837,8 +754,8 @@ public class ExcelUtilImage<T> {
                     } else {
                         val = cell.getNumericCellValue();
                         if (DateUtil.isCellDateFormatted(cell)) {
-                            val = DateUtil.getJavaDate((Double)val);
-                        } else if ((Double)val % 1.0D != 0.0D) {
+                            val = DateUtil.getJavaDate((Double) val);
+                        } else if ((Double) val % 1.0D != 0.0D) {
                             val = new BigDecimal(val.toString());
                         } else {
                             val = (new DecimalFormat("0")).format(val);
@@ -857,7 +774,7 @@ public class ExcelUtilImage<T> {
         if (row == null) {
             return true;
         } else {
-            for(int i = row.getFirstCellNum(); i < row.getLastCellNum(); ++i) {
+            for (int i = row.getFirstCellNum(); i < row.getLastCellNum(); ++i) {
                 Cell cell = row.getCell(i);
                 if (cell != null && cell.getCellType() != CellType.BLANK) {
                     return false;
@@ -874,11 +791,11 @@ public class ExcelUtilImage<T> {
         } else {
             String str;
             if (val instanceof Date) {
-                str = DateUtils.parseDateToStr(dateFormat, (Date)val);
+                str = DateUtils.parseDateToStr(dateFormat, (Date) val);
             } else if (val instanceof LocalDateTime) {
-                str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime)val));
+                str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDateTime) val));
             } else if (val instanceof LocalDate) {
-                str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate)val));
+                str = DateUtils.parseDateToStr(dateFormat, DateUtils.toDate((LocalDate) val));
             } else {
                 str = val.toString();
             }