Browse Source

午餐订单模块数据导出功能

user5 5 years atrás
parent
commit
7cadaa629b

+ 6 - 4
src/main/java/com/jeeplus/modules/wexintheorder/dao/TheOrderWebDao.java

@@ -2,16 +2,18 @@ package com.jeeplus.modules.wexintheorder.dao;
 
 import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
-import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
-import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.wexintheorder.entity.TheOrder;
 
+import java.util.List;
+
 @MyBatisDao
 public interface TheOrderWebDao extends CrudDao<TheOrder> {
     int queryCount(TheOrder theOrder);
 
-    Integer insertOrder(TheOrder theOrder);
+    /*查询分管领导名称*/
+    List<TheOrder> getLeadershipList(TheOrder theOrder);
 
-    Integer updateOrder(TheOrder theOrder);
+    /*根据分管领导查询订餐或预定信息*/
+    List<TheOrder> getTheOrderListByLeadership(TheOrder theOrder);
 
 }

+ 1 - 2
src/main/java/com/jeeplus/modules/wexintheorder/entity/TheOrder.java

@@ -92,7 +92,6 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.leadership = leadership;
     }
 
-    @ExcelField(title="订餐时间", align=2, sort=5)
     public Date getConfirmOrder() {
         return confirmOrder;
     }
@@ -101,7 +100,7 @@ public class TheOrder extends DataEntity<TheOrder> {
         this.confirmOrder = confirmOrder;
     }
 
-    @ExcelField(title="预定时间", align=2, sort=6)
+    @ExcelField(title="预定时间", align=2, sort=5)
     public Date getScheduled() {
         return scheduled;
     }

+ 27 - 0
src/main/java/com/jeeplus/modules/wexintheorder/service/TheOrderLeadership.java

@@ -0,0 +1,27 @@
+package com.jeeplus.modules.wexintheorder.service;
+
+import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+
+import java.util.List;
+
+public class TheOrderLeadership {
+
+    private String leadership;
+    private List<TheOrder> theOrderList;
+
+    public String getLeadership() {
+        return leadership;
+    }
+
+    public void setLeadership(String leadership) {
+        this.leadership = leadership;
+    }
+
+    public List<TheOrder> getTheOrderList() {
+        return theOrderList;
+    }
+
+    public void setTheOrderList(List<TheOrder> theOrderList) {
+        this.theOrderList = theOrderList;
+    }
+}

+ 10 - 10
src/main/java/com/jeeplus/modules/wexintheorder/service/TheOrderWebService.java

@@ -9,7 +9,6 @@ import com.jeeplus.modules.wexintheorder.dao.TheOrderWebDao;
 import com.jeeplus.modules.wexintheorder.entity.TheOrder;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -71,16 +70,17 @@ public class TheOrderWebService extends CrudService<TheOrderWebDao,TheOrder>{
         return date;
     }
 
-    //增加操作
-    @Transactional
-    public void insertOrder(TheOrder theOrder){
-        theOrderDao.insertOrder(theOrder);
-    };
+    /**
+     * 查询分管领导名称
+     * @param theOrder
+     * @return
+     */
+    public List<TheOrder> getLeadershipList(TheOrder theOrder){
+        return dao.getLeadershipList(theOrder);
+    }
 
-    //修改操作
-    @Transactional
-    public void updateOrder(TheOrder theOrder){
-        theOrderDao.updateOrder(theOrder);
+    public List<TheOrder> getTheOrderListByLeadership(TheOrder theOrder){
+        return dao.getTheOrderListByLeadership(theOrder);
     }
 
 

+ 83 - 648
src/main/java/com/jeeplus/modules/wexintheorder/utils/TheOrderExportExcel.java

@@ -1,21 +1,16 @@
 package com.jeeplus.modules.wexintheorder.utils;
+
 import com.google.common.collect.Lists;
 import com.jeeplus.common.utils.Encodes;
 import com.jeeplus.common.utils.Reflections;
-import com.jeeplus.common.utils.SpringContextHolder;
 import com.jeeplus.common.utils.excel.ExportExcel;
 import com.jeeplus.common.utils.excel.annotation.ExcelField;
-import com.jeeplus.modules.sys.entity.Dict;
-import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.utils.DictUtils;
-import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
-import com.jeeplus.modules.workexample.entity.WorkExampleIndices;
-import com.jeeplus.modules.workjobgrade.entity.WorkJobGrade;
-import com.jeeplus.modules.workjobgrade.service.WorkJobGradeService;
+import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+import com.jeeplus.modules.wexintheorder.service.TheOrderLeadership;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.CellRangeAddressList;
 import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
 import org.apache.poi.xssf.usermodel.XSSFRichTextString;
@@ -31,6 +26,7 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.*;
 
+
 /**
  * 导出Excel文件(导出“XLSX”格式,支持大数据量导出   @see org.apache.poi.ss.SpreadsheetVersion)
  * @author jeeplus
@@ -51,11 +47,6 @@ public class TheOrderExportExcel {
     private Sheet sheet;
 
     /**
-     * sheet页签数量
-     */
-    private Integer sheetNumber;
-
-    /**
      * 样式列表
      */
     private Map<String, CellStyle> styles;
@@ -75,8 +66,8 @@ public class TheOrderExportExcel {
      * @param title 表格标题,传“空值”,表示无标题
      * @param cls 实体对象,通过annotation.ExportField获取标题
      */
-    public TheOrderExportExcel(String title,Integer orderStatus ,Class<?> cls){
-        this(title, orderStatus, cls, 1);
+    public TheOrderExportExcel(String title, List<TheOrderLeadership> theOrderList, List<TheOrder> leadershipList, Class<?> cls){
+        this(title, theOrderList,leadershipList , cls, 1);
     }
 
     /**
@@ -86,7 +77,7 @@ public class TheOrderExportExcel {
      * @param type 导出类型(1:导出数据;2:导出模板)
      * @param groups 导入分组
      */
-    public TheOrderExportExcel(String title, Integer orderStatus, Class<?> cls, int type, int... groups){
+    public TheOrderExportExcel(String title, List<TheOrderLeadership> theOrderList,List<TheOrder> leadershipList, Class<?> cls, int type, int... groups){
         // Get annotation field
         Field[] fs = cls.getDeclaredFields();
         for (Field f : fs){
@@ -142,11 +133,6 @@ public class TheOrderExportExcel {
                         new Integer(((ExcelField)o2[0]).sort()));
             };
         });
-        // Initialize
-        if(type==2){
-            initializeTemplate(title, annotationList);
-            return;
-        }
         List<String> headerList = Lists.newArrayList();
         for (Object[] os : annotationList){
             String t = ((ExcelField)os[0]).title();
@@ -159,339 +145,101 @@ public class TheOrderExportExcel {
             }
             headerList.add(t);
         }
-        initialize(title, headerList, orderStatus);
-    }
-
-    private void initializeTemplate(String title, List<Object[]> annotationList) {
-        this.wb = new SXSSFWorkbook(500);
-        this.sheet = wb.createSheet("Export");
-        this.styles = createStyles(wb);
-
-        // Create title
-        if (StringUtils.isNotBlank(title)){
-            Row titleRow = sheet.createRow(rownum++);
-            titleRow.setHeightInPoints(30);
-            Cell titleCell = titleRow.createCell(0);
-            titleCell.setCellStyle(styles.get("title"));
-            titleCell.setCellValue(title);
-            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(),
-                    titleRow.getRowNum(), titleRow.getRowNum(), annotationList.size()-1));
-        }
-        // Create header
-        if (annotationList == null){
-            throw new RuntimeException("headerList not null!");
-        }
-
-        List<String> headerList = Lists.newArrayList();
-        for (Object[] os : annotationList){
-            String t = ((ExcelField)os[0]).title();
-            // 如果是导出,则去掉注释
-            String[] ss = StringUtils.split(t, "**", 2);
-            if (ss.length==2){
-                t = ss[0];
-            }
-            headerList.add(t);
-        }
-
-        Row headerRow = sheet.createRow(rownum++);
-        headerRow.setHeightInPoints(16);
-        for (int i = 0; i < headerList.size(); i++) {
-            Cell cell = headerRow.createCell(i);
-            cell.setCellStyle(styles.get("header"));
-            String[] ss = StringUtils.split(headerList.get(i), "**", 2);
-            if (ss.length==2){
-                cell.setCellValue(ss[0]);
-                Comment comment = this.sheet.createDrawingPatriarch().createCellComment(
-                        new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
-                comment.setString(new XSSFRichTextString(ss[1]));
-                cell.setCellComment(comment);
-            }else{
-                cell.setCellValue(headerList.get(i));
-            }
-            sheet.autoSizeColumn(i);
-            Object[] objects = annotationList.get(i);
-            String dictType = ((ExcelField) objects[0]).dictType();
-            if(StringUtils.isNotBlank(dictType)){
-                List<Dict> dictList = DictUtils.getDictList(dictType);
-                if(dictList!=null&&dictList.size()>0) {
-                    String[] arr = new String[dictList.size()];
-                    for (int j = 0; j < dictList.size(); j++) {
-                        arr[j] = dictList.get(j).getLabel();
-                    }
-                    sheet.addValidationData(createDataValidation(arr, 2, 5000, i, i));
-                    continue;
-                }
-            }
-            String mainDictType = ((ExcelField) objects[0]).mainDictType();
-            if(StringUtils.isNotBlank(mainDictType)){
-                List<MainDictDetail> dictList = DictUtils.getMainDictList(mainDictType);
-                if(dictList!=null&&dictList.size()>0) {
-                    String[] arr = new String[dictList.size()];
-                    for (int j = 0; j < dictList.size(); j++) {
-                        arr[j] = dictList.get(j).getLabel();
-                    }
-                    sheet.addValidationData(createDataValidation(arr, 2, 5000, i, i));
-                    continue;
-                }
-            }
-
-            String valiName = ((ExcelField) objects[0]).valiName();
-            if(StringUtils.isNotBlank(valiName)){
-                String[] arr = null;
-                if(valiName.equals("WorkJobGrade")){
-                    WorkJobGradeService workJobGradeService = SpringContextHolder.getBean(WorkJobGradeService.class);
-                    WorkJobGrade workJobGrade = new WorkJobGrade();
-                    List<WorkJobGrade> list = workJobGradeService.findList(workJobGrade);
-                    arr = new String[list.size()];
-                    for (int j = 0; j < list.size(); j++) {
-                        arr[j] = list.get(j).getName();
-                    }
-                }else {
-                    List<Dict> dictList = DictUtils.getDictList(valiName);
-                    if(dictList!=null&&dictList.size()>0) {
-                        arr = new String[dictList.size()];
-                        for (int j = 0; j < dictList.size(); j++) {
-                            arr[j] = dictList.get(j).getLabel();
-                        }
-                    }else {
-                        List<MainDictDetail> mainDictList = DictUtils.getMainDictList(valiName);
-                        arr = new String[mainDictList.size()];
-                        for (int j = 0; j < mainDictList.size(); j++) {
-                            arr[j] = mainDictList.get(j).getLabel();
-                        }
-                    }
-                }
-                if(arr!=null&&arr.length>0) {
-                    sheet.addValidationData(createDataValidation(arr, 2, 5000, i, i));
-                }
-                continue;
-            }
-        }
-        for (int i = 0; i < headerList.size(); i++) {
-            int colWidth = sheet.getColumnWidth(i)*2;
-            sheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);
-        }
-        log.debug("Initialize success.");
+        initialize(title, headerList, theOrderList,leadershipList);
     }
 
     /**
-     * 构造函数
+     * 初始化函数
      * @param title 表格标题,传“空值”,表示无标题
-     * @param cls 实体对象,通过annotation.ExportField获取标题
-     * @param type 导出类型(1:导出数据;2:导出模板)
-     * @param groups 导入分组
+     * @param headerList 表头列表
      */
-    public TheOrderExportExcel(boolean b, String title, Class<?> cls, int type,Integer orderStatus, int... groups){
-        // Get annotation field
-        Field[] fs = cls.getDeclaredFields();
-        for (Field f : fs){
-            ExcelField ef = f.getAnnotation(ExcelField.class);
-            if (ef != null && (ef.type()==0 || ef.type()==type)){
-                if (groups!=null && groups.length>0){
-                    boolean inGroup = false;
-                    for (int g : groups){
-                        if (inGroup){
-                            break;
-                        }
-                        for (int efg : ef.groups()){
-                            if (g == efg){
-                                inGroup = true;
-                                annotationList.add(new Object[]{ef, f});
-                                break;
-                            }
-                        }
-                    }
-                }else{
-                    annotationList.add(new Object[]{ef, f});
-                }
+    private void initialize(String title, List<String> headerList,List<TheOrderLeadership> theOrderList, List<TheOrder> leadershipList) {
+        this.wb = new SXSSFWorkbook(500);
+        for (TheOrderLeadership theOrder: theOrderList) {
+            this.sheet = wb.createSheet(theOrder.getLeadership());
+            this.styles = createStyles(wb);
+            rownum = 0;
+            // Create title
+            if (StringUtils.isNotBlank(title)){
+                Row titleRow = sheet.createRow(rownum++);
+                titleRow.setHeightInPoints(30);
+                Cell titleCell = titleRow.createCell(0);
+                titleCell.setCellStyle(styles.get("title"));
+                titleCell.setCellValue(title);
+                sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(),
+                        titleRow.getRowNum(), titleRow.getRowNum(), headerList.size()-1));
             }
-        }
-        // Get annotation method
-        Method[] ms = cls.getDeclaredMethods();
-        for (Method m : ms){
-            ExcelField ef = m.getAnnotation(ExcelField.class);
-            if (ef != null && (ef.type()==0 || ef.type()==type)){
-                if (groups!=null && groups.length>0){
-                    boolean inGroup = false;
-                    for (int g : groups){
-                        if (inGroup){
-                            break;
-                        }
-                        for (int efg : ef.groups()){
-                            if (g == efg){
-                                inGroup = true;
-                                annotationList.add(new Object[]{ef, m});
-                                break;
-                            }
-                        }
-                    }
+            // Create header
+            if (headerList == null){
+                throw new RuntimeException("headerList not null!");
+            }
+            Row headerRow = sheet.createRow(rownum++);
+            headerRow.setHeightInPoints(16);
+            for (int i = 0; i < headerList.size(); i++) {
+                Cell cell = headerRow.createCell(i);
+                cell.setCellStyle(styles.get("header"));
+                String[] ss = StringUtils.split(headerList.get(i), "**", 2);
+                if (ss.length==2){
+                    cell.setCellValue(ss[0]);
+                    Comment comment = this.sheet.createDrawingPatriarch().createCellComment(
+                            new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
+                    comment.setString(new XSSFRichTextString(ss[1]));
+                    cell.setCellComment(comment);
                 }else{
-                    annotationList.add(new Object[]{ef, m});
+                    cell.setCellValue(headerList.get(i));
                 }
+                sheet.autoSizeColumn(i);
             }
-        }
-        // Field sorting
-        Collections.sort(annotationList, new Comparator<Object[]>() {
-            public int compare(Object[] o1, Object[] o2) {
-                return new Integer(((ExcelField)o1[0]).sort()).compareTo(
-                        new Integer(((ExcelField)o2[0]).sort()));
-            };
-        });
-        // Initialize
-        if(type==2){
-            int size = annotationList.size();
-            if (b){
-                for (int i = 1; i <= 3; i++) {
-                    annotationList.remove(size-i);
-                }
+            for (int i = 0; i < headerList.size(); i++) {
+                int colWidth = sheet.getColumnWidth(i)*2;
+                sheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);
             }
-            initializeTemplate(title, annotationList);
-            return;
-        }
-        List<String> headerList = Lists.newArrayList();
-        if (b){
-            if (annotationList.size()>3) {
-                for (int i = 0; i < annotationList.size() - 3; i++) {
-                    Object[] os = annotationList.get(i);
-                    String t = ((ExcelField) os[0]).title();
-                    // 如果是导出,则去掉注释
-                    if (type == 1) {
-                        String[] ss = StringUtils.split(t, "**", 2);
-                        if (ss.length == 2) {
-                            t = ss[0];
-                        }
-                    }
-                    headerList.add(t);
-                }
-            }else {
+
+            for (TheOrder e : theOrder.getTheOrderList()) {
+                int colunm = 0;
+                Row row = this.addRow();
+                StringBuilder sb = new StringBuilder();
                 for (Object[] os : annotationList){
-                    String t = ((ExcelField)os[0]).title();
-                    // 如果是导出,则去掉注释
-                    if (type==1){
-                        String[] ss = StringUtils.split(t, "**", 2);
-                        if (ss.length==2){
-                            t = ss[0];
+                    ExcelField ef = (ExcelField)os[0];
+                    Object val = null;
+                    // Get entity value
+                    try{
+                        if (StringUtils.isNotBlank(ef.value())){
+                            val = Reflections.invokeGetter(e, ef.value());
+                        }else{
+                            if (os[1] instanceof Field){
+                                val = Reflections.invokeGetter(e, ((Field)os[1]).getName());
+                            }else if (os[1] instanceof Method){
+                                val = Reflections.invokeMethod(e, ((Method)os[1]).getName(), new Class[] {}, new Object[] {});
+                            }
                         }
+                        // If is dict, get dict label
+                        if (StringUtils.isNotBlank(ef.dictType())){
+                            val = DictUtils.getDictLabel(val==null?"":val.toString(), ef.dictType(), "");
+                        }else if (StringUtils.isNotBlank(ef.mainDictType())){
+                            val = DictUtils.getMainDictLabel(val==null?"":val.toString(), ef.mainDictType(), "");
+                        }
+                    }catch(Exception ex) {
+                        // Failure to ignore
+                        log.info(ex.toString());
+                        val = "";
                     }
-                    headerList.add(t);
-                }
-            }
-        }else {
-            for (Object[] os : annotationList){
-                String t = ((ExcelField)os[0]).title();
-                // 如果是导出,则去掉注释
-                if (type==1){
-                    String[] ss = StringUtils.split(t, "**", 2);
-                    if (ss.length==2){
-                        t = ss[0];
-                    }
+                    this.addCell(row, colunm++, val, ef.align(), ef.fieldType());
+                    sb.append(val + ", ");
                 }
-                headerList.add(t);
+                log.debug("Write success: ["+row.getRowNum()+"] "+sb.toString());
             }
-        }
-        initialize(title, headerList, orderStatus);
-    }
-
-    /**
-     * 构造函数
-     * @param title 表格标题,传“空值”,表示无标题
-     * @param headers 表头数组
-     */
-    public TheOrderExportExcel(String title, String[] headers,Integer orderStatus) {
-        initialize(title, Lists.newArrayList(headers),orderStatus);
-    }
-
-    /**
-     * 构造函数
-     * @param title 表格标题,传“空值”,表示无标题
-     * @param headerList 表头列表
-     */
-    public TheOrderExportExcel(String title, List<String> headerList,Integer orderStatus) {
-        initialize(title, headerList,orderStatus);
-    }
+            Row cells = this.addRow();
+            this.addCell(cells, 0, "", 2, null);
+            this.addCell(cells, 1, "", 2, null);
+            this.addCell(cells, 2, "", 2, null);
+            this.addCell(cells, 3, "合计(人数)", 2, null);
+            this.addCell(cells, 4, Integer.toString(theOrder.getTheOrderList().size()), 2, null);
 
-    /**
-     * 初始化函数
-     * @param title 表格标题,传“空值”,表示无标题
-     * @param headerList 表头列表
-     */
-    private void initialize(String title, List<String> headerList,Integer orderStatus) {
-        if (0 == orderStatus){
-            for (String header: headerList) {
-                if ("订餐时间".equals(header)){
-                    headerList.remove(header);
-                    break;
-                }
-            }
-        }else{
-            for (String header: headerList) {
-                if ("预定时间".equals(header)){
-                    headerList.remove(header);
-                    break;
-                }
-            }
-        }
-        this.wb = new SXSSFWorkbook(500);
-        this.sheet = wb.createSheet("Export");
-        this.styles = createStyles(wb);
-
-        // Create title
-        if (StringUtils.isNotBlank(title)){
-            Row titleRow = sheet.createRow(rownum++);
-            titleRow.setHeightInPoints(30);
-            Cell titleCell = titleRow.createCell(0);
-            titleCell.setCellStyle(styles.get("title"));
-            titleCell.setCellValue(title);
-            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(),
-                    titleRow.getRowNum(), titleRow.getRowNum(), headerList.size()-1));
-        }
-        // Create header
-        if (headerList == null){
-            throw new RuntimeException("headerList not null!");
-        }
-        Row headerRow = sheet.createRow(rownum++);
-        headerRow.setHeightInPoints(16);
-        for (int i = 0; i < headerList.size(); i++) {
-            Cell cell = headerRow.createCell(i);
-            cell.setCellStyle(styles.get("header"));
-            String[] ss = StringUtils.split(headerList.get(i), "**", 2);
-            if (ss.length==2){
-                cell.setCellValue(ss[0]);
-                Comment comment = this.sheet.createDrawingPatriarch().createCellComment(
-                        new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
-                comment.setString(new XSSFRichTextString(ss[1]));
-                cell.setCellComment(comment);
-            }else{
-                cell.setCellValue(headerList.get(i));
-            }
-            sheet.autoSizeColumn(i);
-        }
-        for (int i = 0; i < headerList.size(); i++) {
-            int colWidth = sheet.getColumnWidth(i)*2;
-            sheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);
         }
         log.debug("Initialize success.");
     }
 
-    private DataValidation createDataValidation(String[] textList, int firstRow, int endRow, int firstCol, int endCol) {
-
-        DataValidationHelper helper = sheet.getDataValidationHelper();
-        //加载下拉列表内容
-        DataValidationConstraint constraint = helper.createExplicitListConstraint(textList);
-        //DVConstraint constraint = new DVConstraint();
-        constraint.setExplicitListValues(textList);
-
-        //设置数据有效性加载在哪个单元格上。四个参数分别是:起始行、终止行、起始列、终止列
-        CellRangeAddressList regions = new CellRangeAddressList(firstRow, endRow, firstCol, endCol);
-
-        //数据有效性对象
-        DataValidation data_validation = helper.createValidation(constraint, regions);
-        //DataValidation data_validation = new DataValidation(regions, constraint);
-        data_validation.createErrorBox("error","数据不符合规范");
-
-        return data_validation;
-    }
-
     /**
      * 创建表格样式
      * @param wb 工作薄对象
@@ -634,161 +382,10 @@ public class TheOrderExportExcel {
      * 添加数据(通过annotation.ExportField添加数据)
      * @return list 数据列表
      */
-    public <E> TheOrderExportExcel setDataList(List<E> list, Integer orderStatus){
-        for (E e : list){
-            int colunm = 0;
-            Row row = this.addRow();
-            StringBuilder sb = new StringBuilder();
-            for (Object[] os : annotationList){
-                ExcelField ef = (ExcelField)os[0];
-                Object val = null;
-                // Get entity value
-                try{
-                    if (StringUtils.isNotBlank(ef.value())){
-                        val = Reflections.invokeGetter(e, ef.value());
-                    }else{
-                        if (os[1] instanceof Field){
-                            val = Reflections.invokeGetter(e, ((Field)os[1]).getName());
-                        }else if (os[1] instanceof Method){
-                            val = Reflections.invokeMethod(e, ((Method)os[1]).getName(), new Class[] {}, new Object[] {});
-                        }
-                    }
-                    // If is dict, get dict label
-                    if (StringUtils.isNotBlank(ef.dictType())){
-                        val = DictUtils.getDictLabel(val==null?"":val.toString(), ef.dictType(), "");
-                    }else if (StringUtils.isNotBlank(ef.mainDictType())){
-                        val = DictUtils.getMainDictLabel(val==null?"":val.toString(), ef.mainDictType(), "");
-                    }
-                }catch(Exception ex) {
-                    // Failure to ignore
-                    log.info(ex.toString());
-                    val = "";
-                }
-                this.addCell(row, colunm++, val, ef.align(), ef.fieldType());
-                sb.append(val + ", ");
-            }
-            log.debug("Write success: ["+row.getRowNum()+"] "+sb.toString());
-        }
-        Row cells = this.addRow();
-        this.addCell(cells, 0, "", 2, null);
-        this.addCell(cells, 1, "", 2, null);
-        this.addCell(cells, 2, "", 2, null);
-        this.addCell(cells, 3, "合计", 2, null);
-        this.addCell(cells, 5, Integer.toString(list.size()), 2, null);
+    public <E> TheOrderExportExcel setDataList(){
         return this;
     }
 
-    /**
-     * 添加数据(通过annotation.ExportField添加数据)
-     * @return list 数据列表
-     */
-    public <E> TheOrderExportExcel setDataList(boolean b, List<E> list){
-        if (b){
-            for (E e : list) {
-                int colunm = 0;
-                Row row = this.addRow();
-                StringBuilder sb = new StringBuilder();
-                if (annotationList.size()>=3){
-                    for (int i = 0 ;i < annotationList.size()-3 ; i++){
-                        Object[] os = annotationList.get(i);
-                        ExcelField ef = (ExcelField) os[0];
-                        Object val = null;
-                        // Get entity value
-                        try {
-                            if (StringUtils.isNotBlank(ef.value())) {
-                                val = Reflections.invokeGetter(e, ef.value());
-                            } else {
-                                if (os[1] instanceof Field) {
-                                    val = Reflections.invokeGetter(e, ((Field) os[1]).getName());
-                                } else if (os[1] instanceof Method) {
-                                    val = Reflections.invokeMethod(e, ((Method) os[1]).getName(), new Class[]{}, new Object[]{});
-                                }
-                            }
-                            // If is dict, get dict label
-                            if (StringUtils.isNotBlank(ef.dictType())) {
-                                val = DictUtils.getDictLabel(val == null ? "" : val.toString(), ef.dictType(), "");
-                            }else if (StringUtils.isNotBlank(ef.mainDictType())){
-                                val = DictUtils.getMainDictLabel(val==null?"":val.toString(), ef.mainDictType(), "");
-                            }
-                        } catch (Exception ex) {
-                            // Failure to ignore
-                            log.info(ex.toString());
-                            val = "";
-                        }
-                        this.addCell(row, colunm++, val, ef.align(), ef.fieldType());
-                        sb.append(val + ", ");
-                    }
-                    log.debug("Write success: [" + row.getRowNum() + "] " + sb.toString());
-                }else {
-                    for (Object[] os : annotationList) {
-                        ExcelField ef = (ExcelField) os[0];
-                        Object val = null;
-                        // Get entity value
-                        try {
-                            if (StringUtils.isNotBlank(ef.value())) {
-                                val = Reflections.invokeGetter(e, ef.value());
-                            } else {
-                                if (os[1] instanceof Field) {
-                                    val = Reflections.invokeGetter(e, ((Field) os[1]).getName());
-                                } else if (os[1] instanceof Method) {
-                                    val = Reflections.invokeMethod(e, ((Method) os[1]).getName(), new Class[]{}, new Object[]{});
-                                }
-                            }
-                            // If is dict, get dict label
-                            if (StringUtils.isNotBlank(ef.dictType())) {
-                                val = DictUtils.getDictLabel(val == null ? "" : val.toString(), ef.dictType(), "");
-                            }else if (StringUtils.isNotBlank(ef.mainDictType())){
-                                val = DictUtils.getMainDictLabel(val==null?"":val.toString(), ef.mainDictType(), "");
-                            }
-                        } catch (Exception ex) {
-                            // Failure to ignore
-                            log.info(ex.toString());
-                            val = "";
-                        }
-                        this.addCell(row, colunm++, val, ef.align(), ef.fieldType());
-                        sb.append(val + ", ");
-                    }
-                    log.debug("Write success: [" + row.getRowNum() + "] " + sb.toString());
-                }
-            }
-        }else {
-            for (E e : list) {
-                int colunm = 0;
-                Row row = this.addRow();
-                StringBuilder sb = new StringBuilder();
-                for (Object[] os : annotationList) {
-                    ExcelField ef = (ExcelField) os[0];
-                    Object val = null;
-                    // Get entity value
-                    try {
-                        if (StringUtils.isNotBlank(ef.value())) {
-                            val = Reflections.invokeGetter(e, ef.value());
-                        } else {
-                            if (os[1] instanceof Field) {
-                                val = Reflections.invokeGetter(e, ((Field) os[1]).getName());
-                            } else if (os[1] instanceof Method) {
-                                val = Reflections.invokeMethod(e, ((Method) os[1]).getName(), new Class[]{}, new Object[]{});
-                            }
-                        }
-                        // If is dict, get dict label
-                        if (StringUtils.isNotBlank(ef.dictType())) {
-                            val = DictUtils.getDictLabel(val == null ? "" : val.toString(), ef.dictType(), "");
-                        }else if (StringUtils.isNotBlank(ef.mainDictType())){
-                            val = DictUtils.getMainDictLabel(val==null?"":val.toString(), ef.mainDictType(), "");
-                        }
-                    } catch (Exception ex) {
-                        // Failure to ignore
-                        log.info(ex.toString());
-                        val = "";
-                    }
-                    this.addCell(row, colunm++, val, ef.align(), ef.fieldType());
-                    sb.append(val + ", ");
-                }
-                log.debug("Write success: [" + row.getRowNum() + "] " + sb.toString());
-            }
-        }
-        return this;
-    }
 
     /**
      * 输出数据流
@@ -846,167 +443,5 @@ public class TheOrderExportExcel {
         return this;
     }
 
-//	/**
-//	 * 导出测试
-//	 */
-//	public static void main(String[] args) throws Throwable {
-//
-//		List<String> headerList = Lists.newArrayList();
-//		for (int i = 1; i <= 10; i++) {
-//			headerList.add("表头"+i);
-//		}
-//
-//		List<String> dataRowList = Lists.newArrayList();
-//		for (int i = 1; i <= headerList.size(); i++) {
-//			dataRowList.add("数据"+i);
-//		}
-//
-//		List<List<String>> dataList = Lists.newArrayList();
-//		for (int i = 1; i <=1000000; i++) {
-//			dataList.add(dataRowList);
-//		}
-//
-//		ExportExcel ee = new ExportExcel("表格标题", headerList);
-//
-//		for (int i = 0; i < dataList.size(); i++) {
-//			Row row = ee.addRow();
-//			for (int j = 0; j < dataList.get(i).size(); j++) {
-//				ee.addCell(row, j, dataList.get(i).get(j));
-//			}
-//		}
-//
-//		ee.writeFile("target/export.xlsx");
-//
-//		ee.dispose();
-//
-//		log.debug("Export success.");
-//
-//	}
-
-    /**
-     * 动态生成案例模板
-     * @param title sheetName
-     * @param indicesList 指标项
-     * @param headerList 表头内容
-     * @param type 是否单位赋值
-     */
-    private void exampleTemplate(SXSSFWorkbook wb, String title, List<WorkExampleIndices> indicesList, List<String> headerList,String type) {
-        this.sheet = wb.createSheet(title);
-        this.styles = createStyles(wb);
-        this.rownum=0;
-        // Create title
-        if (StringUtils.isNotBlank(title)){
-            Row titleRow = sheet.createRow(rownum++);
-            titleRow.setHeightInPoints(30);
-            Cell titleCell = titleRow.createCell(0);
-            titleCell.setCellStyle(styles.get("title"));
-            titleCell.setCellValue(title);
-            sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(),
-                    titleRow.getRowNum(), titleRow.getRowNum(), headerList.size()-1));
-        }
-        // Create header
-        if (headerList == null){
-            throw new RuntimeException("headerList not null!");
-        }
-        Row headerRow = sheet.createRow(rownum++);
-        headerRow.setHeightInPoints(20);
-        for (int i = 0; i < headerList.size(); i++) {
-            Cell cell = headerRow.createCell(i);
-            cell.setCellStyle(styles.get("header"));
-            String[] ss = StringUtils.split(headerList.get(i), "**", 2);
-            if (ss.length==2){
-                cell.setCellValue(ss[0]);
-                Comment comment = this.sheet.createDrawingPatriarch().createCellComment(
-                        new XSSFClientAnchor(0, 0, 0, 0, (short) 3, 3, (short) 5, 6));
-                comment.setString(new XSSFRichTextString(ss[1]));
-                cell.setCellComment(comment);
-            }else{
-                cell.setCellValue(headerList.get(i));
-            }
-            sheet.autoSizeColumn(i);
-        }
-        for(WorkExampleIndices workExampleIndices:indicesList){
-            Row contentRow=sheet.createRow(rownum++);
-            contentRow.setHeightInPoints(20);
-            for (int i = 0; i < headerList.size(); i++) {
-                Cell cell = contentRow.createCell(i);
-                cell.setCellStyle(styles.get("data"));
-                if(i==0){
-                    cell.setCellValue(workExampleIndices.getName());
-                }
-                if(i==1){
-                    if("2".equals(type)){
-                        cell.setCellValue(DictUtils.getMainDictLabel(workExampleIndices.getItemUnit(),"unit_type",""));
-                    }
-                }
-                sheet.autoSizeColumn(i);
-            }
-
-        }
-        for (int i = 0; i < headerList.size(); i++) {
-            int colWidth = sheet.getColumnWidth(i)*2;
-            sheet.setColumnWidth(i, colWidth < 3000 ? 3000 : colWidth);
-        }
-
-        log.debug("Initialize success.");
-    }
-    /**
-     *
-     * @param title sheetName
-     * @param indicesList 指标项
-     * @param headerList 表头内容
-     * @param type 是否单位赋值
-     */
-    public void createSheet(String title, List<WorkExampleIndices> indicesList, List<String> headerList,String type) {
-        exampleTemplate(wb,title,indicesList,headerList,type);
-
-    }
-    public TheOrderExportExcel(int i){
-        this.wb=new SXSSFWorkbook(i);
-        this.sheet = wb.createSheet("工程概况");
-        this.styles = createStyles(wb);
-        Row titleRow = sheet.createRow(rownum++);
-        titleRow.setHeightInPoints(40);
-        Cell titleCell = titleRow.createCell(0);
-        titleCell.setCellStyle(styles.get("title"));
-        titleCell.setCellValue("工程概况");
-        sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(),
-                titleRow.getRowNum(), titleRow.getRowNum(), 3));
-        sheet.setColumnWidth(0,6000);
-        sheet.setColumnWidth(1,6000);
-        sheet.setColumnWidth(2,6000);
-        sheet.setColumnWidth(3,6000);
-        createRows(sheet,"工程名称","工程类型");
-        createRows(sheet,"工程地点","建设规模(m2)");
-        createRows(sheet,"结构形式","基础类型");
-        createRows(sheet,"规模(户数、床位数等)","结构安全等级");
-        createRows(sheet,"编制阶段","投资类型");
-        createRows(sheet,"计价类型","计价依据");
-        createRows(sheet,"招标基准信息价","计税模式");
-        createRows(sheet,"开工日期","竣工日期");
-        createRows(sheet,"地上建筑面积","地下建筑面积");
-        createRows(sheet,"人防建筑面积","车库建筑面积");
-        createRows(sheet,"地上层数","地下层数");
-        createRows(sheet,"地上层高","地下层高");
-        createRows(sheet,"总层数","檐高");
-        createRows(sheet,"内墙面装修","外墙面装修");
-        createRows(sheet,"天棚装修","楼地面装修");
-        createRows(sheet,"门","窗");
-        createRows(sheet,"说明","");
-
-    }
-    public void createRows(Sheet sheet,String str1,String str2){
-        Row contentRow = sheet.createRow(rownum++);
-        contentRow.setHeightInPoints(30);
-        for(int i=0;i<4;i++){
-            Cell cell = contentRow.createCell(i);
-            cell.setCellStyle(styles.get("data"));
-            if(i==0){
-                cell.setCellValue(str1);
-            }else if(i==2){
-                cell.setCellValue(str2);
-            }
-        }
-    }
 }
 

+ 34 - 7
src/main/java/com/jeeplus/modules/wexintheorder/web/TheOrderWebController.java

@@ -6,6 +6,7 @@ import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.wexintheorder.entity.TheOrder;
+import com.jeeplus.modules.wexintheorder.service.TheOrderLeadership;
 import com.jeeplus.modules.wexintheorder.service.TheOrderWebService;
 import com.jeeplus.modules.wexintheorder.utils.TheOrderExportExcel;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
@@ -20,9 +21,12 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
 
 @Controller
 @RequestMapping(value = "${adminPath}/wexin/theorderweb")
@@ -59,8 +63,8 @@ public class TheOrderWebController extends BaseController {
      */
     @RequiresPermissions("wexin:theorderweb:export")
     @RequestMapping(value = "export", method= RequestMethod.POST)
-    public String exportFile(TheOrder theOrder, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
-        try {
+    public String exportFile(TheOrder theOrder, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) throws IOException {
+        /*try {*/
             String fileHeader = null;
             String excelHeaderName = null;
             if (null != theOrder.getOrderStatus() && 0 == theOrder.getOrderStatus()){
@@ -72,12 +76,26 @@ public class TheOrderWebController extends BaseController {
                 excelHeaderName = dateTimeStr(theOrder.getBeginDate());
             }
             String fileName = fileHeader+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
-            Page<TheOrder> page = theOrderWebService.findPage(new Page<TheOrder>(request, response, -1), theOrder);
-            new TheOrderExportExcel(excelHeaderName + fileHeader, theOrder.getOrderStatus(), TheOrder.class).setDataList(page.getList(), theOrder.getOrderStatus()).write(response, fileName).dispose();
-            return null;
-        } catch (Exception e) {
+            List<TheOrder> leadershipList = this.getLeadershipList(theOrder);
+            List<TheOrderLeadership> theOrderList = new ArrayList<>();
+
+            //根据分管领导名称查询对应数据
+            for (TheOrder leadership : leadershipList) {
+                TheOrderLeadership theOrderLeadership = new TheOrderLeadership();
+                leadership.setBeginDate(theOrder.getBeginDate());
+                leadership.setEndDate(theOrder.getEndDate());
+                leadership.setOrderStatus(theOrder.getOrderStatus());
+                List<TheOrder> theOrderListByLeadership = theOrderWebService.getTheOrderListByLeadership(leadership);
+                theOrderLeadership.setLeadership(leadership.getLeadership());
+                theOrderLeadership.setTheOrderList(theOrderListByLeadership);
+                theOrderList.add(theOrderLeadership);
+            }
+
+            new TheOrderExportExcel(excelHeaderName + fileHeader, theOrderList,leadershipList, TheOrder.class).write(response, fileName).dispose();
+            //return null;
+        /*} catch (Exception e) {
             addMessage(redirectAttributes, "导出项目记录失败!失败信息:"+e.getMessage());
-        }
+        }*/
         return "redirect:"+ Global.getAdminPath()+"/project/projectRecords/?repage";
     }
 
@@ -86,4 +104,13 @@ public class TheOrderWebController extends BaseController {
         Calendar c = Calendar.getInstance();
         return sf.format(dateTime);
     }
+
+    /**
+     * 查询分管领导名称
+     * @param theOrder
+     * @return
+     */
+    private List<TheOrder> getLeadershipList(TheOrder theOrder){
+        return theOrderWebService.getLeadershipList(theOrder);
+    }
 }

+ 41 - 38
src/main/resources/mappings/modules/wexintheorder/TheOrderWebDao.xml

@@ -17,6 +17,12 @@
 		a.correlationId AS "correlationId"
 	</sql>
 
+	<sql id="orderLeftJoinColumns">
+		left join sys_user su on su.id =a.correlationId
+		left join sys_office so on su.office_id = so.id
+		left join sys_company sc on su.company_id=sc.id
+	</sql>
+
 	<select id="get" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder">
 		SELECT
 		<include refid="orderColumns"/>
@@ -26,9 +32,9 @@
 
 	<select id="findList" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder" >
 		SELECT
-		(@rownum :=@rownum + 1) as "serialNumber",
 		<include refid="orderColumns"/>
-		FROM the_order a,(select @rownum := 0) temp
+		FROM the_order a
+		<include refid="orderLeftJoinColumns"/>
 		<where>
 			a.del_flag = #{DEL_FLAG_NORMAL}
 			<if test="orderStatus != null and orderStatus = 0">
@@ -50,10 +56,10 @@
 		</where>
 		<choose>
 			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
-				ORDER BY ${page.orderBy}
+				ORDER BY sc.id desc , so.id desc , a.leadership desc, a.create_date asc , ${page.orderBy}
 			</when>
 			<otherwise>
-				ORDER BY a.leadership desc, a.update_date DESC
+				ORDER BY sc.id desc , so.id desc, a.leadership desc, a.create_date asc
 			</otherwise>
 		</choose>
 	</select>
@@ -81,41 +87,38 @@
 		</where>
 	</select>
 
-	<insert id="insertOrder">
-		INSERT INTO the_order(
-			id,
-			create_by,
-			create_date,
-			update_by,
-			update_date,
-			remarks,
-			del_flag,
-			name,
-			department,
-			leadership,
-			confirmOrder,
-			scheduled,
-			correlationId
-		) VALUES (
-			#{id},
-			#{createBy.id},
-			#{createDate},
-			#{updateBy.id},
-			#{updateDate},
-			#{remarks},
-			#{delFlag},
-			#{name},
-			#{department},
-			#{leadership},
-			#{confirmOrder},
-			#{scheduled},
-			#{correlationId}
-		)
-	</insert>
-
-	<update id="updateOrder">
+	<!-- 查询分管领导名称 -->
+	<select id="getLeadershipList" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder">
+		select distinct(a.leadership) as leadership from the_order a
+		<where>
+			<if test="orderStatus != null and orderStatus = 0">
+				<if test="beginDate !=null">
+					and a.scheduled >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.scheduled &lt; #{endDate}
+				</if>
+			</if>
+			<if test="orderStatus != null and orderStatus = 1">
+				<if test="beginDate !=null">
+					and a.confirmOrder >= #{beginDate}
+				</if>
+				<if test="endDate !=null">
+					and a.confirmOrder &lt; #{endDate}
+				</if>
+			</if>
+		</where>
+	</select>
 
-	</update>
+	<select id="getTheOrderListByLeadership" resultType="com.jeeplus.modules.wexintheorder.entity.TheOrder">
+	select (@rownum :=@rownum + 1) as "serialNumber",theOrder.* from (
+		select
+			<include refid="orderColumns"/>
+		from the_order a
+			<include refid="orderLeftJoinColumns"/>
+		where a.leadership=#{leadership}
+		order by sc.id desc ,so.id desc,a.create_date asc) as theOrder ,(select @rownum := 0) temp
+	</select>
 
 
 </mapper>