Jelajahi Sumber

线路过重载导入、详情、删除

ZHGYL_GKPT 4 tahun lalu
induk
melakukan
9d2297563f
25 mengubah file dengan 3414 tambahan dan 899 penghapusan
  1. 33 3
      src/main/java/com/minpay/common/constant/Constant.java
  2. 20 23
      src/main/java/com/minpay/common/service/impl/DianwangServiceImpl.java
  3. 80 3
      src/main/java/com/minpay/common/service/impl/ReportServiceImpl.java
  4. 81 0
      src/main/java/com/minpay/common/util/ExcelTemplateUtil.java
  5. 1 4
      src/main/java/com/minpay/common/util/ExportExcelUtil.java
  6. 126 0
      src/main/java/com/minpay/common/util/StringUtil.java
  7. 30 0
      src/main/java/com/minpay/db/table/own/mapper/IReportBatchMapper.java
  8. 376 25
      src/main/java/com/minpay/reportManage/action/DataWareManageAction.java
  9. 842 820
      src/main/java/com/minpay/reportManage/action/ReportManageAction.java
  10. 194 0
      src/main/java/com/minpay/reportManage/action/XlgzzReportAction.java
  11. 17 0
      src/main/java/com/minpay/test.java
  12. 111 0
      src/main/resources/com/minpay/db/table/own/mapper/ReportBatchMapper.xml
  13. 6 6
      src/main/webapp/WEB-INF/config.properties
  14. 44 8
      src/main/webapp/admin/ddy/reportManageDetailDdy.html
  15. 4 0
      src/main/webapp/admin/index.html
  16. 2 2
      src/main/webapp/admin/jtfjt/reportProduceJtfjt.html
  17. 248 0
      src/main/webapp/admin/khxx/reportManageKhxx.html
  18. 248 0
      src/main/webapp/admin/pbgzz/reportManagePbgzz.html
  19. 2 2
      src/main/webapp/admin/reprotManage/dataWare.html
  20. 110 1
      src/main/webapp/admin/reprotManage/dataWareDetail.html
  21. 17 2
      src/main/webapp/admin/reprotManage/dataWareUpload.html
  22. 57 0
      src/main/webapp/admin/xlgzz/reportManageDetailXlgzz.html
  23. 248 0
      src/main/webapp/admin/xlgzz/reportManageXlgzz.html
  24. 464 0
      src/main/webapp/admin/xlgzz/reportProduceXlgzz.html
  25. 53 0
      src/main/webapp/js/commutils.js

+ 33 - 3
src/main/java/com/minpay/common/constant/Constant.java

@@ -97,10 +97,15 @@ public class Constant implements IMINBusinessConstant{
 	static final public String FILE_SERVER_PATH = "http://101.201.144.102/";	
 	
 	/**
-	 * excel 文件
+	 * excel 文件 excel2003
 	 */
 	static final public String FILE_TYPE_XLS = "xls";
 	/**
+	 * excel 文件 excel2007
+	 */
+	static final public String FILE_TYPE_XLSX = "xlsX";
+
+	/**
 	 * pdf文件
 	 */
 	static final public String FILE_TYPE_PDF = "pdf";
@@ -228,7 +233,7 @@ public class Constant implements IMINBusinessConstant{
 	static final public String FRS_TYPE_THREE="03";
 	
 	/**
-	 * 图片上传大小 B 5242880
+	 * 图片上传大小 B 5242880 = 5M
 	 */
 	static final public String IMG_UPLOAD_MAX = "5242880";
 	
@@ -317,7 +322,18 @@ public class Constant implements IMINBusinessConstant{
 	 * 原始文件类型 1000007:计停非计停
 	 */
 	public static final String FILE_DETAIL_TYPE_06 = "1000007";
-	
+	/**
+	 * 原始文件类型 1000008:客户信息明细
+	 */
+	public static final String FILE_DETAIL_TYPE_07 = "1000008";
+	/**
+	 * 原始文件类型 1000009:配变过重载
+	 */
+	public static final String FILE_DETAIL_TYPE_08 = "1000009";
+	/**
+	 * 原始文件类型 1000010:线路过重载
+	 */
+	public static final String FILE_DETAIL_TYPE_09 = "1000010";
 	/**
 	 * 报表类型 TQTDRB:台区停电日报
 	 */
@@ -385,6 +401,20 @@ public class Constant implements IMINBusinessConstant{
 	 */
 	public static final String REPORT_TYPE_15 = "ZDTTYBB2";
 	/**
+	 * 客户信息明细
+	 */
+	public static final String REPORT_TYPE_16 = "RPKHXXMX";
+	/**
+	 * 报表类型 线路重过载-日报
+	 */
+
+	public static final String REPORT_TYPE_17 = "XLGZZRB";
+	/**
+	 * 报表类型 线路重过载-周报
+	 */
+	public static final String REPORT_TYPE_18 = "XLGZZZB";
+
+	/**
 	 * 原始文件状态 0正常
 	 */
 	public static final String FILE_INF_STATE_0 = "0"; 

+ 20 - 23
src/main/java/com/minpay/common/service/impl/DianwangServiceImpl.java

@@ -8,27 +8,8 @@ import com.minpay.common.constant.Constant;
 import com.minpay.common.format.IFormatService;
 import com.minpay.common.service.IDianwangService;
 import com.minpay.common.util.CommonUtil;
-import com.minpay.db.table.mapper.DwFileDetail00Mapper;
-import com.minpay.db.table.mapper.DwFileDetail01Mapper;
-import com.minpay.db.table.mapper.DwFileDetail02Mapper;
-import com.minpay.db.table.mapper.DwFileDetail03Mapper;
-import com.minpay.db.table.mapper.DwFileDetail04Mapper;
-import com.minpay.db.table.mapper.DwFileDetail05Mapper;
-import com.minpay.db.table.mapper.DwFileDetail07Mapper;
-import com.minpay.db.table.model.DwFileDetail00;
-import com.minpay.db.table.model.DwFileDetail00Example;
-import com.minpay.db.table.model.DwFileDetail01;
-import com.minpay.db.table.model.DwFileDetail01Example;
-import com.minpay.db.table.model.DwFileDetail02;
-import com.minpay.db.table.model.DwFileDetail02Example;
-import com.minpay.db.table.model.DwFileDetail03;
-import com.minpay.db.table.model.DwFileDetail03Example;
-import com.minpay.db.table.model.DwFileDetail04;
-import com.minpay.db.table.model.DwFileDetail04Example;
-import com.minpay.db.table.model.DwFileDetail05;
-import com.minpay.db.table.model.DwFileDetail05Example;
-import com.minpay.db.table.model.DwFileDetail07;
-import com.minpay.db.table.model.DwFileDetail07Example;
+import com.minpay.db.table.mapper.*;
+import com.minpay.db.table.model.*;
 import com.startup.minpay.frame.exception.MINBusinessException;
 import com.startup.minpay.frame.jdbc.MINRowBounds;
 import com.startup.minpay.frame.service.base.IMINDataBaseService;
@@ -101,12 +82,28 @@ public class DianwangServiceImpl implements IDianwangService {
     		fileDetail05Example.createCriteria().andFileIdEqualTo(fileId);
     		List<DwFileDetail05> resList = db.selectByExample(DwFileDetail05Mapper.class, fileDetail05Example, rows);
     		return resList;
-    	}
-		else if (Constant.FILE_DETAIL_TYPE_06.equals(fileType)) {
+    	} else if (Constant.FILE_DETAIL_TYPE_06.equals(fileType)) {
 			DwFileDetail07Example fileDetail07Example = new DwFileDetail07Example();
 			fileDetail07Example.createCriteria().andFileIdEqualTo(fileId);
 			List<DwFileDetail07> resList = db.selectByExample(DwFileDetail07Mapper.class, fileDetail07Example, rows);
 			return resList;
+		} else if (Constant.FILE_DETAIL_TYPE_07.equals(fileType)) {//客户信息
+			DwFileDetail08Example fileDetail08Example = new DwFileDetail08Example();
+			fileDetail08Example.createCriteria().andFileIdEqualTo(fileId);
+			List<DwFileDetail08> resList = db.selectByExample(DwFileDetail08Mapper.class, fileDetail08Example, rows);
+			return resList;
+		} else if (Constant.FILE_DETAIL_TYPE_08.equals(fileType)) {//配变过重载
+			DwFileDetail09Example fileDetail09Example = new DwFileDetail09Example();
+			fileDetail09Example.createCriteria().andFileIdEqualTo(fileId);
+			fileDetail09Example.setOrderByClause("dfd9_sequ");
+			List<DwFileDetail09> resList = db.selectByExample(DwFileDetail09Mapper.class, fileDetail09Example, rows);
+			return resList;
+		} else if (Constant.FILE_DETAIL_TYPE_09.equals(fileType)) {//线路过重载
+			DwFileDetail10Example fileDetail10Example = new DwFileDetail10Example();
+			fileDetail10Example.createCriteria().andFileIdEqualTo(fileId);
+			fileDetail10Example.setOrderByClause("dfd10_sequ");
+			List<DwFileDetail10> resList = db.selectByExample(DwFileDetail10Mapper.class, fileDetail10Example, rows);
+			return resList;
 		}
     	return null;
 	}

+ 80 - 3
src/main/java/com/minpay/common/service/impl/ReportServiceImpl.java

@@ -11,6 +11,9 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import com.minpay.common.util.StringUtil;
+import com.minpay.db.table.own.mapper.IReportBatchMapper;
+import net.sf.json.JSONObject;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 
@@ -252,10 +255,82 @@ public class ReportServiceImpl implements IReportService {
 		} else if (Constant.REPORT_TYPE_15.equals(reportTypeId)) {
 			List<List<String>> resList = reportTypeZDDTYBBII(firstFileId, request);
     		resMap.put("resList", resList);
+		} else if(Constant.REPORT_TYPE_17.equals(reportTypeId)){//过重载日报
+    		Map<String,Object> mm = new HashMap<String,Object>();
+			mm.put("range",range);
+			mm.put("timeRange",timeRange);
+//			mm.put("reportInf",reportInf);
+			List<Map<String,Object>> resList = reportTypeXlgzzRb(mm, request);
+			resMap.put("resList", resList);
+		} else if(Constant.REPORT_TYPE_18.equals(reportTypeId)){
+
 		}
 		return resMap;
 	}
 
+	/**
+	 *
+	 * @param map
+	 * @param request
+	 * @return
+	 */
+	private List<Map<String,Object>> reportTypeXlgzzRb(Map<String,Object> map, MINHttpServletRequestContext request) throws MINBusinessException {
+		String range = StringUtil.ObjectToString(map.get("range"));//日期范围
+		String timeRange = StringUtil.ObjectToString(map.get("timeRange"));//时间范围
+		String[] s1 = range.split("-");
+		String[] s2 = timeRange.split("-");
+		String startDay = s1[0].trim();
+		String endDay = s1[1].trim();
+		String startTime = s2[0].trim();
+		String endTime = s2[1].trim();
+		String start =startDay.substring(0,4) + "-" + startDay.substring(4,6)+"-"+startDay.substring(6,8)+" "
+				+startTime.substring(0,2) + ":" + startTime.substring(2,4)+":"+startTime.substring(4,6);
+		String end =endDay.substring(0,4) + "-" + endDay.substring(4,6)+"-"+endDay.substring(6,8)+" "
+				+endTime.substring(0,2) + ":" + endTime.substring(2,4)+":"+endTime.substring(4,6);
+		List<Map<String,Object>> resList = new ArrayList<Map<String,Object>>();
+		if("".equals(range) ||  "".equals(timeRange)){
+			return new ArrayList<>();
+		} else{
+			Map<String,Object> descStr = new HashMap<>();
+			IMINDataBaseService db = Service.lookup(IMINDataBaseService.class);
+			map.put("start",start);
+			map.put("end",end);
+			map.put("type","1");
+			List<Map<String, String>>  DDYZLFXBList = db.getMybatisMapper(IReportBatchMapper.class).selectXlgzzData(map);
+			int maxZz = 0;
+			String maxXlName = "";
+			Map<String,Object> rstMap = new HashMap<>();
+			JSONObject jo = new JSONObject();
+			if(DDYZLFXBList != null && !DDYZLFXBList.isEmpty()){
+				int size = DDYZLFXBList.size();
+				rstMap.put("total",size);
+				for (int i = 0; i < size; i++) {
+					Map<String,String> temp2 = DDYZLFXBList.get(i);
+					String dw = temp2.get("DFD10_XGSMC");
+					String bz = temp2.get("DFD10_BZMC");
+					String xlmc = temp2.get("DFD10_XLMC");
+					jo.accumulate(dw+"-"+bz+"-"+xlmc+"-sum",StringUtil.ObjToFloat(temp2.get("DFD10_GZSC")));//时长
+					jo.accumulate(dw+"-"+bz+"-"+xlmc+"-sum2",StringUtil.ObjToFloat(temp2.get("DFD10_FZL")));//负载率
+					jo.accumulate(dw+"-"+bz+"-"+xlmc+"-count",1);
+				}
+			}
+			rstMap.put("result",jo);
+			resList.add(descStr);
+			resList.add(rstMap);
+			JSONObject jo1 = new JSONObject();
+			jo1.put("key",1);
+			jo1.accumulate("key",1);
+			jo1.accumulate("key",2);
+			jo1.accumulate("key",3);
+			jo1.accumulate("key",4);
+			jo1.accumulate("key",5);
+			jo1.accumulate("key",6);
+
+			System.out.println(jo1.toString());
+		}
+		return resList;
+	}
+
 
 	/**
 	 * 台区停电日报
@@ -1559,11 +1634,13 @@ public class ReportServiceImpl implements IReportService {
 		
 		resMap.put("resList", resList);
 		resMap.put("count", rows.getCount());
-		
+		//取所有用户ID
 		List<String> yhidList = CommonUtil.getIdFromList(DDYZLFXBList, "yhid");
+
 		DwFileDetail03Example example03 = new DwFileDetail03Example();
 		example03.createCriteria().andSjrqBetween(beginTime, endTime).andYhidIn(yhidList);
 		example03.setOrderByClause("DFD3_YHID,DFD3_SJRQ desc");
+		//查询数据-用户ID,开始日期、结束日期
 		List<DwFileDetail03> detailList = db.selectByExample(DwFileDetail03Mapper.class, example03);
 		
 		// 获取全年累计天数
@@ -1576,8 +1653,8 @@ public class ReportServiceImpl implements IReportService {
 		int a = 0;
 		for(Map<String, String> map :DDYZLFXBList){
 			List<String> childList = Arrays.asList(new String[titleList.size()]);
-			String dysc = map.get("dysc");
-			String ljts = map.get("ljts");
+			String dysc = map.get("dysc");//低压时长
+			String ljts = map.get("ljts");//累计天数
 			a++;
 			childList.set(0, a+"");
 			childList.set(1, map.get("xgsmc"));

+ 81 - 0
src/main/java/com/minpay/common/util/ExcelTemplateUtil.java

@@ -0,0 +1,81 @@
+package com.minpay.common.util;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Excel导入模板校验
+ */
+public class ExcelTemplateUtil {
+    /**
+     * 验证表头数据
+     * @param excel
+     * @param header
+     * @return
+     */
+    public static boolean verificationExcelHeadLine(FileItem excel, Map<String,Object> header) throws IOException, InvalidFormatException {
+        boolean flag = true;
+
+        List<String[]> list = (List<String[]>) header.get("header");
+        Workbook wb = WorkbookFactory.create(excel.getInputStream());
+        String fileName = excel.getName();
+        Workbook hssfWorkbook = null;
+        if (fileName.endsWith(".xlsx") ){
+            hssfWorkbook = new XSSFWorkbook(excel.getInputStream());//Excel 2007
+        }else if(fileName.endsWith(".xls")){
+            hssfWorkbook = new HSSFWorkbook(excel.getInputStream());//Excel 2003
+        }
+        int numSheets = hssfWorkbook.getNumberOfSheets();
+        List<String[]> listWK = new ArrayList<String[]>();
+        //取所有sheet页的表头
+        if ( numSheets == 0) {
+            flag = false;
+        } else {
+            for (int numSheet = 0; numSheet < numSheets; numSheet++) {//遍历Sheet
+                Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
+                if (hssfSheet == null) {
+                    continue;
+                }
+                int rows = StringUtil.ObjToInt(header.get("headerRows"));
+                // 循环行Row
+                for (int rowNum = 0; rowNum <= rows; rowNum++) {//遍历行
+                    int cols = StringUtil.ObjToInt(header.get("cols"));
+
+                    String[] colsValue = new String[cols];
+                    Row hssfRow = hssfSheet.getRow(rowNum);
+                    if (hssfRow != null) {
+                        for (int cloNum = 0; cloNum < cols; cloNum++){//遍历列
+                            Cell value = hssfRow.getCell(cloNum);
+                            colsValue[cloNum] = value.toString();
+                        }
+                    }
+                    listWK.add(colsValue);
+
+                }
+            }
+        }
+        //比对表头,如果不一致则表示模板不一致,校验失败
+        String[] excelheader = list.get(list.size() - 1);
+        String[] excelheader2 = listWK.get(listWK.size() - 1);
+        if(excelheader.length != excelheader2.length){
+            flag = false;
+        } else {
+            for (int i = 0; i < excelheader.length; i++) {
+                if(!excelheader[i].equals(excelheader2[i])){
+                    flag = false;
+                    break;
+                }
+            }
+        }
+        return flag;
+    }
+}

+ 1 - 4
src/main/java/com/minpay/common/util/ExportExcelUtil.java

@@ -7,10 +7,7 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.Map;
+import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 

+ 126 - 0
src/main/java/com/minpay/common/util/StringUtil.java

@@ -0,0 +1,126 @@
+package com.minpay.common.util;
+
+import org.springframework.util.StringUtils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+
+
+/**
+ * 字符串工具类
+ */
+public class StringUtil extends StringUtils {
+    /**
+     * obj 转 String
+     * @param obj
+     * @return
+     */
+    public static String ObjectToString(Object obj){
+        if(obj == null || "".equals(obj)){
+            return "";
+        }else{
+            return String.valueOf(obj).trim();
+        }
+    }
+
+    /**
+     * obj转int
+     * @param obj
+     * @return
+     */
+    public static Integer ObjToInt(Object obj){
+        if(obj == null || "".equals(obj)){
+            return 0;
+        }
+        if(obj instanceof Integer){
+            return Integer.valueOf(String.valueOf(obj));
+        }else{
+            try {
+                return Integer.valueOf(String.valueOf(obj).replaceAll("月份","").replaceAll("月",""));
+            } catch (Exception e){
+                return 0;
+            }
+        }
+    }
+
+    /**
+     * obj转float
+     * @param obj
+     * @return
+     */
+    public static Float ObjToFloat(Object obj){
+        if(obj == null || "".equals(obj)){
+            return 0f;
+        }
+        if(obj instanceof Float){
+            return Float.valueOf(String.valueOf(obj));
+        }else{
+            try {
+                return Float.valueOf(String.valueOf(obj.toString().replaceAll("%","")));
+            }catch (Exception e){
+                return 0f;
+            }
+        }
+    }
+    /**
+     * obj转double
+     * @param obj
+     * @return
+     */
+    public static Double ObjToDouble(Object obj){
+        if(obj == null || "".equals(obj)){
+            return 0d;
+        }
+        if(obj instanceof Double){
+            return Double.valueOf(String.valueOf(obj));
+        }else{
+            try {
+                return Double.valueOf(String.valueOf(obj));
+            } catch (Exception e){
+                return 0d;
+            }
+        }
+    }
+    /**
+     * obj转date
+     * @param obj
+     * @return
+     */
+    public static Date ObjToDate(Object obj,String type) throws ParseException {
+        if(obj == null || "".equals(obj)){
+            return null;
+        }
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//注意月份是MM
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        DateTimeFormatter fa = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        if(obj instanceof Date){
+            if("1".equals(type)){
+                return simpleDateFormat.parse(obj.toString().replaceAll("/","-"));
+            }else if ("2".equals(type)){
+                return simpleDateFormat2.parse(obj.toString().replaceAll("/","-"));
+            }
+        }else{
+           if(obj.toString().endsWith(".0")){
+               if("1".equals(type)){
+                   return simpleDateFormat.parse(obj.toString().substring(0,obj.toString().length()-2));
+               }else if("2".equals(type)){
+                   return simpleDateFormat2.parse(obj.toString().substring(0,obj.toString().length()-2));
+               }
+           }else {
+               LocalDateTime ldt = LocalDateTime.parse(obj.toString(),dtf);
+               String datetime = ldt.format(fa);
+               if("1".equals(type)){
+                   return simpleDateFormat.parse(datetime);
+               }else if("2".equals(type)){
+                   return simpleDateFormat2.parse(datetime);
+               }
+               return null;
+           }
+        }
+        return null;
+    }
+}

+ 30 - 0
src/main/java/com/minpay/db/table/own/mapper/IReportBatchMapper.java

@@ -0,0 +1,30 @@
+package com.minpay.db.table.own.mapper;
+
+import com.minpay.db.table.model.DwFileDetail09;
+import com.minpay.db.table.model.DwFileDetail10;
+import com.startup.minpay.frame.jdbc.IMINMybatisMapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IReportBatchMapper  extends IMINMybatisMapper {
+    /**
+     * 批量插入 配变过重载
+     * @param list
+     */
+    void insertPbgzzReport(@Param("list")List<DwFileDetail09> list);
+
+    /**
+     * 批量插入 线路过重载
+     * @param tempList
+     */
+    void insertXlgzzReport(List<DwFileDetail10> tempList);
+
+    /**
+     * 查询线路过重载数据
+     * @param map
+     * @return
+     */
+    List<Map<String, String>> selectXlgzzData(Map<String, Object> map);
+}

+ 376 - 25
src/main/java/com/minpay/reportManage/action/DataWareManageAction.java

@@ -6,18 +6,19 @@ import java.io.OutputStream;
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.net.URLEncoder;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
 
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 
+import com.minpay.common.util.*;
 import com.minpay.db.table.mapper.*;
 import com.minpay.db.table.model.*;
+import com.minpay.db.table.own.mapper.IReportBatchMapper;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.ibatis.transaction.Transaction;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@@ -28,10 +29,6 @@ import com.minpay.common.constant.Constant;
 import com.minpay.common.format.IFormatService;
 import com.minpay.common.service.IDianwangService;
 import com.minpay.common.service.IPropertiesService;
-import com.minpay.common.util.CommonUtil;
-import com.minpay.common.util.ExportExcelUtil;
-import com.minpay.common.util.FilesUtil;
-import com.minpay.common.util.ListUtil;
 import com.minpay.db.table.own.mapper.DataWareManageMapper;
 import com.minpay.db.table.own.mapper.SequenceMapper;
 import com.startup.minpay.frame.business.IMINAction;
@@ -49,6 +46,7 @@ import com.startup.minpay.frame.target.MINComponent;
 import com.startup.minpay.frame.target.MINParam;
 
 import net.sf.json.JSONArray;
+import org.springframework.transaction.annotation.Transactional;
 
 @MINComponent
 public class DataWareManageAction implements IMINAction {
@@ -176,7 +174,7 @@ public class DataWareManageAction implements IMINAction {
     		@MINParam(key = "fileType") String fileType,
     		@MINParam(key = "chongfuFlag") boolean chongfuFlag,
     		MINSession session
-    		) throws MINBusinessException, InvalidFormatException, IOException {
+    		) throws MINBusinessException, InvalidFormatException, IOException, ParseException {
     	MINActionResult res = new MINActionResult();
     	db = Service.lookup(IMINDataBaseService.class);
 		
@@ -311,6 +309,7 @@ public class DataWareManageAction implements IMINAction {
 				fileDetail02.setFileId(fileId);
 				db.insertSelective(DwFileDetail02Mapper.class, fileDetail02);
 			}
+		//低电压
 		} else if(Constant.FILE_DETAIL_TYPE_03.equals(fileType)) {
 			String[] titleKey = new String[]{"no","sgsmc","xgsmc","bdzmc","xlmc","tqid","byqmc","yhgldw1","yhid","yhmc","yhgldw2","dymax","dymin","dyhgl","csxl","cxxl","dysc","gdlx","ljts","sjrq","gddw"};         
 			list = FilesUtil.readExecleasy(fileItem, titleKey, 3);
@@ -333,8 +332,6 @@ public class DataWareManageAction implements IMINAction {
 					}
 				} catch (Exception ex) {
 				}
-//				DateFormat formater = new SimpleDateFormat("yyyyMMdd");
-//				String sjrq = formater.format(excelMap.get("sjrq"));
 				DwFileDetail03 fileDetail03 = new DwFileDetail03();
 				fileDetail03.setId(fileDetailId);
 				fileDetail03.setNo(excelMap.get("no"));
@@ -361,6 +358,7 @@ public class DataWareManageAction implements IMINAction {
 				fileDetail03.setFileId(fileId);
 				db.insertSelective(DwFileDetail03Mapper.class, fileDetail03);
 			}
+		//过电压
 		} else if(Constant.FILE_DETAIL_TYPE_04.equals(fileType)) {
 			String[] titleKey = new String[]{"no","sgsmc","xgsmc","bdzmc","xlmc","tqid","byqmc","yhgldw1","yhid","yhmc","yhgldw2","dymax","dymin","dyhgl","csxl","cxxl","gdysc","gdlx","ljts","gddw","sjrq"};         
 			list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
@@ -416,7 +414,6 @@ public class DataWareManageAction implements IMINAction {
 			String[] titleKey = new String[]{"NO","GDBH","GWGDBH","ZT","YWLX","DQBZ","SLRY","SLSJ","SLLR","YHBH","YHMC","LXDZ","LXDH","HFNR","YJFL","EJFL",
 					"YWZL","SJDW","GDDW","CBD","CLJG","CLDW","CLBM","GLGD","WTYYFL","GDFJ","ZRBM","GDSJ","GQSJ","GQYY","FWQD","SJHTZRYY"};         
 			list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
-			
 			if (list.size() == 0) {
 				throw new MINBusinessException("无数据,请添加数据");//无数据,请添加数据
 			}
@@ -459,6 +456,7 @@ public class DataWareManageAction implements IMINAction {
 				fileDetail05.setFileId(fileId);
 				db.insertSelective(DwFileDetail05Mapper.class, fileDetail05);
 			}
+		//计停非计停
 		}else if(Constant.FILE_DETAIL_TYPE_06.equals(fileType)) {
 			String[] titleKey = new String[]{"NO","TYPE","UNIT","DEVICE","TIME","EVENTTYPE","FA","TRIPTYPE","CAUSE","CHZDZQK","HANDLE","ERROBRIEF"};
 			list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
@@ -485,6 +483,197 @@ public class DataWareManageAction implements IMINAction {
 				fileDetail07.setErrobrief(excelMap.get("ERROBRIEF"));
 				db.insertSelective(DwFileDetail07Mapper.class, fileDetail07);
 			}
+		//客户信息明细
+		}else if(Constant.FILE_DETAIL_TYPE_07.equals(fileType)){
+			//标题对应key
+			String[] titleKey = new String[]{
+			};
+			String[] titleValue = new String[]{
+					"所属文件id"
+			};
+			//验证模板是否正确
+			Map<String,Object> header = new HashMap<String, Object>();
+			List<String[]> headerTitle = new ArrayList<String[]>();
+			headerTitle.add(titleKey);
+			headerTitle.add(titleValue);
+			if(headerTitle == null || headerTitle.isEmpty()){
+				System.out.println("标题列为空");
+			} else {
+				header.put("headerRows",headerTitle.size() - 1);
+				header.put("header",headerTitle);
+				header.put("cols",headerTitle.get(headerTitle.size() -1).length);
+				boolean b = ExcelTemplateUtil.verificationExcelHeadLine(fileItem,header);
+				if (!b) {
+					System.out.println("导入模板不一致");
+				}
+				//读取excel数据
+				list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
+				// 详情数据存入数据库
+				for (Map<String,String> excelMap : list) {
+					String fileDetailId = db.getMybatisMapper(SequenceMapper.class).getSequence("FILE_DETAIL_05_NO");
+					DwFileDetail07 fileDetail07 = new DwFileDetail07();
+					fileDetail07.setId(fileDetailId);
+
+				}
+			}
+
+
+
+		//配变过重载
+		}else if(Constant.FILE_DETAIL_TYPE_08.equals(fileType)){
+			//标题对应key
+			String[] titleKey = new String[]{"SEQU","MONTH","UNIT","BZMC","GBMC","XLMC","FZL","ZDFZL","ZDFZLFSSK","EDRL","GZZYYFL","JTYY",
+					"JJCSFL","JTJJCS","WCSJ","SXBPHL","AXDL","BXDL","CXDL","GZSC","YHSL","ZZSC","PMSID","YXID"};
+			String[] titleValue = new String[]{
+					"序号","月份","单位","维护班组","所属线路","公变名称","负载率(%)",
+					"最大负载率(%)","最大负载率发生时刻时间","额定容量(kVA)","重载原因分类",
+					"具体原因\n" +
+							"(详细说明原因情况)","解决措施分类","具体解决措施\n" +
+					"(详细说明解决措施)",
+					"完成时间\n" +
+							"(格式:2020/01/01)","三相不平衡率(%)(最大负荷)","A相电流(A)","B相电流(A)",
+					"C相电流(A)","用户数量","过载时长","重载时长","PMSID","营销ID"
+			};
+			//验证模板是否正确
+			Map<String,Object> header = new HashMap<String, Object>();
+			List<String[]> headerTitle = new ArrayList<String[]>();
+			headerTitle.add(titleValue);
+			if(headerTitle == null || headerTitle.isEmpty()){
+				System.out.println("标题列为空");
+			} else {
+				header.put("headerRows",headerTitle.size() - 1);
+				header.put("header",headerTitle);
+				header.put("cols",headerTitle.get(headerTitle.size() -1).length);
+				boolean b = ExcelTemplateUtil.verificationExcelHeadLine(fileItem,header);
+				if (!b) {
+					throw new MINBusinessException("导入模板不一致,请使用正确模板");//无数据,请添加数据
+				}
+				//读取excel数据
+				list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
+				if(list == null || list.isEmpty()){
+					System.out.println("");
+					throw new MINBusinessException("无数据,请添加数据");//无数据,请添加数据
+				}
+				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");//注意月份是MM
+				DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+				DateTimeFormatter fa = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+				List<DwFileDetail09> ll = new ArrayList<DwFileDetail09>();
+				// 详情数据存入数据库
+				for (Map<String,String> excelMap : list) {
+					DwFileDetail09 fileDetail09 = new DwFileDetail09();
+					fileDetail09.setSequ(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("SEQU"))));
+					fileDetail09.setId(UUID.randomUUID().toString().replace("-", ""));
+					fileDetail09.setMonth(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("MONTH"))));
+					fileDetail09.setUnit(excelMap.get("UNIT"));
+					fileDetail09.setBzmc(excelMap.get("BZMC"));
+					fileDetail09.setGbmc(excelMap.get("GBMC"));
+					fileDetail09.setXlmc(excelMap.get("XLMC"));
+					fileDetail09.setFzl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("FZL"))));
+					fileDetail09.setZdfzl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("ZDFZL"))));
+					fileDetail09.setZdfzlfssk(excelMap.get("ZDFZLFSSK"));
+					fileDetail09.setEdrl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("EDRL"))));
+					fileDetail09.setGzzyyfl(excelMap.get("GZZYYFL"));
+					fileDetail09.setJtyy(excelMap.get("JTYY"));
+					fileDetail09.setJjcsfl(excelMap.get("JJCSFL"));
+					fileDetail09.setJtjjcs(excelMap.get("JTJJCS"));
+					String wcsj = excelMap.get("WCSJ");
+					if(wcsj != null && !"".equals(wcsj)){
+						LocalDateTime ldt = LocalDateTime.parse(wcsj,dtf);
+						String datetime = ldt.format(fa);
+						fileDetail09.setWcsj(simpleDateFormat.parse(datetime.replaceAll("/","-")));
+					}
+					fileDetail09.setSxbphl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("SXBPHL"))));
+					fileDetail09.setAxdl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("AXDL"))));
+					fileDetail09.setBxdl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("BXDL"))));
+					fileDetail09.setCxdl(Float.valueOf(StringUtil.ObjToInt(excelMap.get("CXDL"))));
+					fileDetail09.setGzsc(Float.valueOf(StringUtil.ObjToInt(excelMap.get("GZSC"))));
+					fileDetail09.setYhsl(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("YHSL"))));
+					fileDetail09.setZzsc(Float.valueOf(StringUtil.ObjToInt(excelMap.get("ZZSC"))));
+					fileDetail09.setYxid(excelMap.get("YXID"));
+					fileDetail09.setPmsid(excelMap.get("PMSID"));
+					fileDetail09.setFileId(fileId);
+					ll.add(fileDetail09);
+				}
+				this.batchReportData(ll,1);
+			}
+		//线路过重载
+		}else if(Constant.FILE_DETAIL_TYPE_09.equals(fileType)){
+			//标题对应key
+			String[] titleKey = new String[]{
+					"SEQU","MONTH","XGSMC","BZMC","BDZMC","XLMC","EDDL","FZL","GZZYY",
+					"GZZJTYY","JJCSFL","JTJJCS","WCSJ","GZSC","YXDL",
+					"FSSK","ZDDL","ZDZFSSK","PBSL","PBRL","SFZDH","PMSID"};
+			String[] titleValue = new String[]{
+					"序号","月份","所属县公司","管理班组","变电站名称",
+					"线路名称","额定电流(A)","负载率","过载原因分类","具体原因\n" +
+					"(详细说明原因情况)",
+					"解决措施分类","具体解决措施\n" +
+					"(详细说明解决措施)","完成时间\n" +
+					"(格式:2020/01/01)",
+					"过载时长(小时)","运行电流(A)","发生时刻","最大电流(A)","最大值发生时刻",
+					"配变数量(台)","配变容量(kVA)","是否自动化","PMSID"
+			};
+			//验证模板是否正确
+			Map<String,Object> header = new HashMap<String, Object>();
+			List<String[]> headerTitle = new ArrayList<String[]>();
+			headerTitle.add(titleValue);
+			if(headerTitle == null || headerTitle.isEmpty()){
+				System.out.println("标题列为空");
+			} else {
+				header.put("headerRows",headerTitle.size() - 1);
+				header.put("header",headerTitle);
+				header.put("cols",headerTitle.get(headerTitle.size() -1).length);
+				boolean b = ExcelTemplateUtil.verificationExcelHeadLine(fileItem,header);
+				if (!b) {
+					throw new MINBusinessException("导入模板不一致,请使用正确模板");//无数据,请添加数据
+				}
+				//读取excel数据
+				list = FilesUtil.readExecleasy(fileItem, titleKey, 1);
+				if(list == null || list.isEmpty()){
+					throw new MINBusinessException("无数据,请添加数据");//无数据,请添加数据
+				}
+				List<DwFileDetail10> ll = new ArrayList<DwFileDetail10>();
+				// 详情数据存入数据库
+				for (Map<String,String> excelMap : list) {
+					DwFileDetail10 fileDetail10 = new DwFileDetail10();
+					fileDetail10.setId(UUID.randomUUID().toString().replace("-", ""));
+					fileDetail10.setSequ(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("SEQU"))));
+					fileDetail10.setMonth(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("MONTH"))));
+					fileDetail10.setXgsmc(excelMap.get("XGSMC"));
+					fileDetail10.setBzmc(excelMap.get("BZMC"));
+					fileDetail10.setBdzmc(excelMap.get("BDZMC"));
+					fileDetail10.setXlmc(excelMap.get("XLMC"));
+					fileDetail10.setEddl(Float.valueOf(StringUtil.ObjToFloat(excelMap.get("EDDL"))));
+					fileDetail10.setFzl(Float.valueOf(StringUtil.ObjToFloat(excelMap.get("FZL"))));
+					fileDetail10.setGzzyy(excelMap.get("GZZYY"));
+					fileDetail10.setGzzjtyy(excelMap.get("GZZJTYY"));
+					fileDetail10.setJjcsfl(excelMap.get("JJCSFL"));
+					fileDetail10.setJtjjcs(excelMap.get("JTJJCS"));
+					String wcsj = excelMap.get("WCSJ");
+					if(wcsj != null && !"".equals(wcsj)){
+						fileDetail10.setWcsj(StringUtil.ObjToDate(wcsj,"1"));
+					}
+					fileDetail10.setGzsc(Float.valueOf(StringUtil.ObjToFloat(excelMap.get("GZSC"))));
+					fileDetail10.setYxdl(Float.valueOf(StringUtil.ObjToFloat(excelMap.get("YXDL"))));
+					String fssk = excelMap.get("FSSK");
+					if(fssk != null && !"".equals(fssk)){
+						fileDetail10.setFssk(StringUtil.ObjToDate(fssk,"2"));
+					}
+					fileDetail10.setZddl(Float.valueOf(StringUtil.ObjToFloat(excelMap.get("ZDDL"))));
+					String zdzfssk = excelMap.get("ZDZFSSK");
+					if(zdzfssk != null && !"".equals(zdzfssk)){
+						fileDetail10.setZdzfssk(StringUtil.ObjToDate(zdzfssk,"2"));
+					}
+					fileDetail10.setPbsl(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("PBSL"))));
+					fileDetail10.setPbrl(Integer.valueOf(StringUtil.ObjToInt(excelMap.get("PBRL"))));
+					fileDetail10.setSfzdh(excelMap.get("SFZDH"));
+					fileDetail10.setPmsid(excelMap.get("PMSID"));
+					fileDetail10.setFileId(fileId);
+
+					ll.add(fileDetail10);
+				}
+				this.batchXlgzzReportData(ll,2);
+			}
 		}
 		
 		// 文件名
@@ -513,7 +702,75 @@ public class DataWareManageAction implements IMINAction {
 		return res;
     }
 
-    /**
+	/**
+	 * 批处理-配变过重载
+	 * @param list
+	 */
+	@Transactional
+	protected void batchReportData(List<DwFileDetail09> list,int type) throws MINBusinessException {
+		if(list != null && list.size() > 0){
+			List<DwFileDetail09> tempList = new ArrayList<DwFileDetail09>();
+			int cou = 0;
+			for (int i = 0; i < list.size() ; i++) {
+				if((list.size() - i) >= 1000){
+					tempList.add( list.get(i));
+					cou += 1;
+					if(cou == 1000){
+						try {
+							db.getMybatisMapper(IReportBatchMapper.class).insertPbgzzReport(tempList);
+						} catch (MINBusinessException e) {
+							e.printStackTrace();
+						}
+						cou = 0;
+						tempList = new ArrayList<DwFileDetail09>();
+					}
+				}
+				if((list.size() - i) < 1000){
+					tempList.add(list.get(i));
+				}
+			}
+			try {
+				db.getMybatisMapper(IReportBatchMapper.class).insertPbgzzReport(tempList);
+			} catch (MINBusinessException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	/**
+	 * 批处理 线路过重载
+	 * @param list
+	 */
+	@Transactional
+	protected void batchXlgzzReportData(List<DwFileDetail10> list,int type) throws MINBusinessException {
+		if(list != null && list.size() > 0){
+			List<DwFileDetail10> tempList = new ArrayList<DwFileDetail10>();
+			int cou = 0;
+			for (int i = 0; i < list.size() ; i++) {
+				if((list.size() - i) >= 1000){
+					tempList.add( list.get(i));
+					cou += 1;
+					if(cou == 1000){
+						try {
+							db.getMybatisMapper(IReportBatchMapper.class).insertXlgzzReport(tempList);
+						} catch (MINBusinessException e) {
+							e.printStackTrace();
+						}
+						cou = 0;
+						tempList = new ArrayList<DwFileDetail10>();
+					}
+				}
+				if((list.size() - i) < 1000){
+					tempList.add(list.get(i));
+				}
+			}
+			try {
+				db.getMybatisMapper(IReportBatchMapper.class).insertXlgzzReport(tempList);
+			} catch (MINBusinessException e) {
+				e.printStackTrace();
+			}
+		}
+	}
+	/**
      * 原始数据文件下载
      * @param fileId
      * @param response
@@ -597,12 +854,79 @@ public class DataWareManageAction implements IMINAction {
         	example.createCriteria().andFileIdEqualTo(fileId);
         	List<DwFileDetail07> selectByExample = db.getMybatisMapper(DwFileDetail07Mapper.class).selectByExample(example);
         	ExportExcelUtil<DwFileDetail07> util = new ExportExcelUtil<DwFileDetail07>();
-        	String[] header = {"系统编号","原EXCEL编号","类型","单位","设备名称","发生时间","事项类型","馈线自动化动作情况","跳闸类型","故障原因","重合闸动作情况","处理纪事","异常概况","所属文件id"};
+        	String[] header = {"系统编号","类型","单位","设备名称","发生时间","事项类型","馈线自动化动作情况","跳闸类型","故障原因","重合闸动作情况","处理纪事","异常概况","所属文件id","原EXCEL编号"};
         	util.exportExcel("计停非计停数据", selectByExample, os, "2007", header);
-        }
+        }else if (Constant.FILE_DETAIL_TYPE_07.equals(type)) {//客户明细
+
+        }else if (Constant.FILE_DETAIL_TYPE_08.equals(type)) {//配变过重载
+			response.setContentType("application/application/vnd.ms-excel");
+			response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode("配变过重载数据.xls", "UTF-8"));
+			DwFileDetail09Example example = new DwFileDetail09Example();
+			example.createCriteria().andFileIdEqualTo(fileId);
+			example.setOrderByClause("dfd9_sequ");
+			List<DwFileDetail09> selectByExample = db.getMybatisMapper(DwFileDetail09Mapper.class).selectByExample(example);
+			ExportExcelUtil<DwFileDetail09> util = new ExportExcelUtil<DwFileDetail09>();
+			String[] header = {"系统编号","月份",
+					"单位",
+					"班组名称",
+					"公变名称",
+					"线路名称",
+					"负载率(%) ",
+					"最大负载率(%)",
+					"最大负载率发生时刻时间",
+					"额定容量(kVA) ",
+					"过(重)载原因分类 ",
+					"具体原因(详细说明原因情况)",
+					"解决措施分类 ",
+					"具体解决措施(详细说明解决措施)",
+					"完成时间",
+					"三相不平衡率(%)(最大负荷) ",
+					"A相电流(A)",
+					"B相电流(A)",
+					"C相电流(A)",
+					"过载时长(小时)",
+					"用户数量",
+					"重载时长",
+					"营销ID",
+					"PMSID",
+					"所属文件ID","","原EXCEL编号"};
+			util.exportExcel("配变过重载数据", selectByExample, os, "2007", header);
+		}else if (Constant.FILE_DETAIL_TYPE_09.equals(type)) {//线路过重载
+			response.setContentType("application/application/vnd.ms-excel");
+			response.setHeader("Content-disposition","attachment;filename=" + URLEncoder.encode("线路过重载数据.xls", "UTF-8"));
+			DwFileDetail10Example example = new DwFileDetail10Example();
+			example.createCriteria().andFileIdEqualTo(fileId);
+			example.setOrderByClause("dfd10_sequ");
+			List<DwFileDetail10> selectByExample = db.getMybatisMapper(DwFileDetail10Mapper.class).selectByExample(example);
+			ExportExcelUtil<DwFileDetail10> util = new ExportExcelUtil<DwFileDetail10>();
+			String[] header = {"系统编号","月份",
+					"所属县公司",
+					"班组名称 ",
+					"变电站名称",
+					"线路名称 ",
+					"额定电流(A)",
+					"负载率(%) ",
+					"过(重)载原因分类",
+					"具体原因(详细说明原因情况) ",
+					"解决措施分类 ",
+					"具体解决措施(详细说明解决措施) ",
+					"完成时间 ",
+					"过载时长(小时) ",
+					"运行电流(A)",
+					"发生时刻 ",
+					"最大电流(A)",
+					"最大值发生时刻",
+					"配变数量(台)",
+					"配变容量(kVA)",
+					"是否自动化",
+					"PMSID",
+					"所属文件ID",
+					"",
+					"原EXCEL编号"};
+			util.exportExcel("线路过重载数据", selectByExample, os, "2007", header);
+		}
         return response;
     }
-    
     /**
      * 原始文件删除
      * @param fileId
@@ -617,22 +941,49 @@ public class DataWareManageAction implements IMINAction {
     		) throws MINBusinessException {
     	MINActionResult res = new MINActionResult();
     	db = Service.lookup(IMINDataBaseService.class);
-    	// 删除原始文件
+    	// 删除原始文件--逻辑删除
     	DwFileInf fileInf = new DwFileInf();
     	fileInf.setState(Constant.FILE_INF_STATE_1);
     	fileInf.setId(fileId);
     	db.updateByPrimaryKeySelective(DwFileInfMapper.class, fileInf);
     	
     	/** 删除明细 */
-    	// 台区停电
-    	if (Constant.FILE_DETAIL_TYPE_00.equals(fileType)) {
+    	if (Constant.FILE_DETAIL_TYPE_00.equals(fileType)) {// 台区停电
     		DwFileDetail00Example fileDetail00Example = new DwFileDetail00Example();
     		fileDetail00Example.createCriteria().andFileIdEqualTo(fileId);
     		db.deleteByExample(DwFileDetail00Mapper.class, fileDetail00Example);
-    	// 低电压
-    	} else if (Constant.FILE_DETAIL_TYPE_01.equals(fileType)) {
-    		
-    	}
+
+    	} else if (Constant.FILE_DETAIL_TYPE_01.equals(fileType)) {// 低电压
+
+		} else if (Constant.FILE_DETAIL_TYPE_02.equals(fileType)) {
+
+		} else if(Constant.FILE_DETAIL_TYPE_03.equals(fileType)){//低电压
+			DwFileDetail03Example DwFileDetail03Example = new DwFileDetail03Example();
+			DwFileDetail03Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail03Mapper.class,DwFileDetail03Example);
+		} else if(Constant.FILE_DETAIL_TYPE_04.equals(fileType)){//过电压
+			DwFileDetail04Example DwFileDetail04Example = new DwFileDetail04Example();
+			DwFileDetail04Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail04Mapper.class,DwFileDetail04Example);
+		} else if(Constant.FILE_DETAIL_TYPE_05.equals(fileType)){//95598工单
+			DwFileDetail05Example DwFileDetail05Example = new DwFileDetail05Example();
+			DwFileDetail05Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail05Mapper.class,DwFileDetail05Example);
+		} else if(Constant.FILE_DETAIL_TYPE_06.equals(fileType)){//计停非计停
+			DwFileDetail07Example DwFileDetail07Example = new DwFileDetail07Example();
+			DwFileDetail07Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail07Mapper.class,DwFileDetail07Example);
+		} else if(Constant.FILE_DETAIL_TYPE_07.equals(fileType)){//客户信息明细
+
+		} else if(Constant.FILE_DETAIL_TYPE_08.equals(fileType)){//配变过重载
+			DwFileDetail09Example DwFileDetail09Example = new DwFileDetail09Example();
+			DwFileDetail09Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail09Mapper.class,DwFileDetail09Example);
+		} else if(Constant.FILE_DETAIL_TYPE_09.equals(fileType)){//线路过重载
+			DwFileDetail10Example DwFileDetail10Example = new DwFileDetail10Example();
+			DwFileDetail10Example.createCriteria().andFileIdEqualTo(fileId);
+			db.deleteByExample(DwFileDetail10Mapper.class,DwFileDetail10Example);
+		}
     	return res;
     }
     
@@ -670,7 +1021,7 @@ public class DataWareManageAction implements IMINAction {
     
     /**
      * 原始数据文件下载
-     * @param fileId
+     * @param type
      * @param response
      * @return
      * @throws MINBusinessException

File diff ditekan karena terlalu besar
+ 842 - 820
src/main/java/com/minpay/reportManage/action/ReportManageAction.java


+ 194 - 0
src/main/java/com/minpay/reportManage/action/XlgzzReportAction.java

@@ -0,0 +1,194 @@
+package com.minpay.reportManage.action;
+
+import com.minpay.common.bean.User;
+import com.minpay.common.constant.Constant;
+import com.minpay.common.format.IFormatService;
+import com.minpay.common.service.IReportService;
+import com.minpay.common.util.DateUtil;
+import com.minpay.db.table.mapper.DwReportDataMapper;
+import com.minpay.db.table.mapper.DwReportInfMapper;
+import com.minpay.db.table.model.DwReportData;
+import com.minpay.db.table.model.DwReportInf;
+import com.minpay.db.table.own.mapper.ReportManageMapper;
+import com.minpay.db.table.own.mapper.SequenceMapper;
+import com.startup.minpay.frame.business.IMINAction;
+import com.startup.minpay.frame.business.res.MINActionResult;
+import com.startup.minpay.frame.constant.IMINBusinessConstant;
+import com.startup.minpay.frame.constant.IMINTransactionEnum;
+import com.startup.minpay.frame.exception.MINBusinessException;
+import com.startup.minpay.frame.jdbc.MINRowBounds;
+import com.startup.minpay.frame.service.base.IMINDataBaseService;
+import com.startup.minpay.frame.service.base.Service;
+import com.startup.minpay.frame.session.MINSession;
+import com.startup.minpay.frame.target.MINAction;
+import com.startup.minpay.frame.target.MINComponent;
+import com.startup.minpay.frame.target.MINParam;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.text.ParseException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@MINComponent
+public class XlgzzReportAction implements IMINAction {
+    private IMINDataBaseService db;
+    /** 报表查询 */
+    public final static String REPORT_INF_QUERY = "reportInfQuery";
+
+
+    /** 生成报表的数据查询 */
+    public final static String FILE_INF_REPORT_QUERY = "fileInfReportQuery";
+
+
+    /** 根据不同的报表类型查询对应时间范围类的所需数据 */
+    public final static String REPORT_NEED_DATA_DETAIL = "reportNeedDataDetail";
+
+
+    /** 生成报表 */
+    public final static String FILE_INF_REPORT_SUBMIT = "fileInfReportSubmit";
+
+
+    /** 报告数据详情 */
+    public final static String REPORT_INF_DETAIL = "reportInfDetail";
+
+
+    /** 报告下载 */
+    public final static String REPORT_DOWN_LOAD = "reportDownLoad";
+
+
+    /** 报告删除 */
+    public final static String REPORT_INF_DELETE = "reportInfDelete";
+
+
+    /** 报告修改 */
+    public final static String REPORT_INF_UPDATE = "reportInfUpdate";
+    @MINAction(value = REPORT_INF_QUERY)
+    public MINActionResult reportInfQuery(
+            @MINParam(key = "page", defaultValue = "1") int page,
+            @MINParam(key = "limit", defaultValue = "10") int limit,
+            @MINParam(key = "date") String date,
+            @MINParam(key = "fileName") String fileName,
+            @MINParam(key = "timeType") String timeType,
+            @MINParam(key = "reportType") String reportType,
+            MINSession session
+    ) throws MINBusinessException {
+        MINActionResult res = new MINActionResult();
+        db = Service.lookup(IMINDataBaseService.class);
+        //分页
+        MINRowBounds rows = new MINRowBounds(page, limit);
+        rows.setSeparateSql(true);
+        Map<String, Object> param = new HashMap<String, Object>();
+
+        param.put("date", date);
+        param.put("fileName", fileName);
+        param.put("timeType", timeType);
+        param.put("reportType", reportType);
+
+        User user = session.getUser();
+        String roleId = user.getRoleId();
+
+        // 非系统管理员
+        if (!Constant.ROLE_ID.equals(roleId)) {
+            param.put("branchId", user.getBranchid());
+        }
+
+        List<Map<String, String>> list = db.getMybatisMapper(ReportManageMapper.class).selectReportInf(param, rows);
+        list = Service.lookup(IFormatService.class).formatDate(list, "uploadDate");
+        // 设置返回值
+        res.set(IMINBusinessConstant.F_PAGING_LAY, list);
+        res.set(IMINBusinessConstant.F_PAGING_COUNT, rows.getCount());
+        return res;
+    }
+    @MINAction(value = FILE_INF_REPORT_SUBMIT, transaction = IMINTransactionEnum.CMT)
+    public MINActionResult fileInfReportSubmit(
+            @MINParam(key = "reportData") String reportData,
+            @MINParam(key = "reportInf") String reportInf,
+            @MINParam(key = "fileName") String fileName,
+            @MINParam(key = "monthNum") String monthNum,
+            @MINParam(key = "countNum") String countNum,
+            @MINParam(key = "range") String range,
+            @MINParam(key = "timeRange") String timeRange,
+            @MINParam(key = "firstFileId") String firstFileId,
+            @MINParam(key = "secondFileId") String secondFileId,
+            @MINParam(key = "ddyFxbId") String ddyFxbId,
+            @MINParam(key = "yearChoose") String yearChoose,
+            @MINParam(key = "monthChoose") String monthChoose,
+            MINSession session
+    ) throws MINBusinessException {
+        db = Service.lookup(IMINDataBaseService.class);
+        MINActionResult res = new MINActionResult();
+
+        String reportId = db.getMybatisMapper(SequenceMapper.class).getSequence("REPORT_INF_NO");
+
+        String reportType = reportInf.split("_")[1];
+        String reportTypeId = reportInf.split("_")[0];
+        // 生成报表数据表
+        DwReportData reportDataInf = new DwReportData();
+        reportDataInf.setId(reportId);
+        reportDataInf.setData(reportData);
+        reportDataInf.setType(reportType);
+        db.insertSelective(DwReportDataMapper.class, reportDataInf);
+
+        User user = session.getUser();
+        // 生成报告表
+        DwReportInf report = new DwReportInf();
+        report.setId(reportId);
+        report.setUploadDate(DateUtil.getCurrentDateString());
+        report.setFileName(fileName);
+        report.setCreatUser(user.getId());
+        report.setBranch(user.getBranchid());
+        report.setType(reportTypeId);
+        report.setZdttyCompareId(firstFileId + "-" + secondFileId);
+        report.setTqtdMonth(monthNum);	// 台区停电【month个月内停电count次及以上台区】的month
+        report.setTqtdCount(countNum);	// 台区停电【month个月内停电count次及以上台区】的count
+        report.setDdyFxbId(ddyFxbId);
+
+        report.setDayInterval(range.replaceAll(" ", ""));		// 日期时间段
+        report.setTimeInterval(timeRange.replaceAll(" ", ""));	// 时分秒时间段
+        report.setYearInterval(yearChoose.replaceAll(" ", ""));
+        report.setMonthInterval(monthChoose.replaceAll(" ", ""));
+        db.insertSelective(DwReportInfMapper.class, report);
+
+        return res;
+    }
+    @MINAction(value = REPORT_NEED_DATA_DETAIL)
+    public MINActionResult reportNeedDataDetail(
+            @MINParam(key = "monthChoose") String monthChoose,
+            @MINParam(key = "range") String range,
+            @MINParam(key = "timeRange") String timeRange,
+            @MINParam(key = "reportInf") String reportInf,
+            @MINParam(key = "monthNum") String monthNum,
+            @MINParam(key = "countNum") String countNum,
+            @MINParam(key = "firstFileId") String firstFileId,
+            @MINParam(key = "secondFileId") String secondFileId,
+            @MINParam(key = "FADateRange") String FADateRange,
+            @MINParam(key = "yearChoose") String yearChoose,
+            @MINParam(key = "DdyDateRange") String DdyDateRange,
+            @MINParam(key = "ddyFxbId") String ddyFxbId
+    ) throws MINBusinessException, ParseException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InvalidFormatException, IOException {
+        MINActionResult res = new MINActionResult();
+
+        // 报表类型id
+        String reportTypeId = reportInf.split("_")[0];
+
+        Map<String, Object> param = new HashMap<String, Object>();
+        param.put("monthChoose", monthChoose);
+        param.put("range", range);
+        param.put("timeRange", timeRange);
+        param.put("reportTypeId", reportTypeId);
+        param.put("monthNum", monthNum);
+        param.put("countNum", countNum);
+        param.put("firstFileId", firstFileId);
+        param.put("secondFileId", secondFileId);
+        param.put("FADateRange", FADateRange);
+        param.put("yearChoose", yearChoose);
+        param.put("DdyDateRange", DdyDateRange);
+        param.put("ddyFxbId", ddyFxbId);
+        Map<String, Object> resMap = Service.lookup(IReportService.class).reportNeedDetail(param);
+        res.set(IMINBusinessConstant.F_PAGING_LAY, resMap);
+        return res;
+    }
+}

+ 17 - 0
src/main/java/com/minpay/test.java

@@ -0,0 +1,17 @@
+package com.minpay;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class test {
+
+    public static void main(String[] args) {
+        String datetime = "20140212111012";
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
+        LocalDateTime ldt = LocalDateTime.parse(datetime,dtf);
+        System.out.println(ldt);
+        DateTimeFormatter fa = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        String datetime2 = ldt.format(fa);
+        System.out.println(datetime2);
+    }
+}

+ 111 - 0
src/main/resources/com/minpay/db/table/own/mapper/ReportBatchMapper.xml

@@ -0,0 +1,111 @@
+<?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" >
+<mapper namespace="com.minpay.db.table.own.mapper.IReportBatchMapper">
+    <!--配变过重载-->
+    <insert id="insertPbgzzReport">
+    INSERT INTO DW_FILE_DETAIL_09 (
+        DFD9_ID,DFD9_MONTH,DFD9_UNIT,DFD9_BZMC,DFD9_GBMC,DFD9_XLMC,DFD9_FZL,DFD9_ZDFZL,DFD9_ZDFZLFSSK,DFD9_EDRL,
+        DFD9_GZZYYFL,DFD9_JTYY,DFD9_JJCSFL,DFD9_JTJJCS,DFD9_WCSJ,DFD9_SXBPHL,DFD9_AXDL,DFD9_BXDL,DFD9_CXDL,DFD9_GZSC,
+        DFD9_YHSL,DFD9_ZZSC,DFD9_YXID,DFD9_PMSID,DFD9_FILE_ID,DFD9_STATE,DFD9_SEQU)
+    SELECT A.* FROM (
+    <foreach collection="list" item="item" index="index" separator="UNION ALL">
+        SELECT
+        #{item.id} id,
+        #{item.month} month,
+        #{item.unit} unit,
+        #{item.bzmc} bzmc,
+        #{item.gbmc} gbmc,
+        #{item.xlmc} xlmc,
+        #{item.fzl} fzl,
+        #{item.zdfzl} zdfzl,
+        #{item.zdfzlfssk} zdfzlfssk,
+        #{item.edrl} edrl,
+        #{item.gzzyyfl} gzzyyfl,
+        #{item.jtyy} jtyy,
+        #{item.jjcsfl} jjcsfl,
+        #{item.jtjjcs} jtjjcs,
+        #{item.wcsj} wcsj,
+        #{item.sxbphl} sxbphl,
+        #{item.axdl} axdl,
+        #{item.bxdl} bxdl,
+        #{item.cxdl} cxdl,
+        #{item.gzsc} gzsc,
+        #{item.yhsl} yhsl,
+        #{item.zzsc} zzsc,
+        #{item.yxid} yxid,
+        #{item.pmsid} pmsid,
+        #{item.fileId} fid,
+        0 state,
+        #{item.sequ} sequ
+        FROM DUAL
+    </foreach>
+    ) A
+    </insert>
+    <!--线路过重载-->
+    <insert id="insertXlgzzReport">
+        INSERT INTO DW_FILE_DETAIL_10 (
+        DFD10_ID,DFD10_MONTH, DFD10_XGSMC,DFD10_BZMC,DFD10_BDZMC,DFD10_XLMC,DFD10_eddl,DFD10_fzl,
+        DFD10_gzzyy,DFD10_gzzjtyy,DFD10_jjcsfl,DFD10_jtjjcs,DFD10_wcsj,DFD10_gzsc,
+        DFD10_yxdl,DFD10_fssk,DFD10_zddl,DFD10_zdzfssk,DFD10_pbsl,DFD10_pbrl,DFD10_sfzdh,DFD10_pmsid,
+        DFD10_FILE_ID,DFD10_state,DFD10_SEQU)
+        SELECT A.* FROM (
+        <foreach collection="list" item="item" index="index" separator="UNION ALL">
+            SELECT
+            #{item.id} id,
+            #{item.month} month,
+            #{item.xgsmc} xgsmc,
+            #{item.bzmc} bzmc,
+            #{item.bdzmc} bdzmc,
+            #{item.xlmc} xlmc,
+            #{item.eddl} eddl,
+            #{item.fzl} fzl,
+            #{item.gzzyy} gzzyy,
+            #{item.gzzjtyy} gzzjtyy,
+            #{item.jjcsfl} jjcsfl,
+            #{item.jtjjcs} jtjjcs,
+            #{item.wcsj} wcsj,
+            #{item.gzsc} gzsc,
+            #{item.yxdl} yxdl,
+            #{item.fssk} fssk,
+            #{item.zddl} zddl,
+            #{item.zdzfssk} zdzfssk,
+            #{item.pbsl} pbsl,
+            #{item.pbrl} pbrl,
+            #{item.sfzdh} sfzdh,
+            #{item.pmsid} pmsid,
+            #{item.fileId} fid,
+            0 state,
+            #{item.sequ} sequ
+            FROM DUAL
+        </foreach>
+        ) A
+    </insert>
+    <select id="selectXlgzzData" resultType="map" parameterType="map">
+        SELECT
+            DFD10_XGSMC,
+            DFD10_BZMC,
+            DFD10_XLMC,
+            DFD10_GZSC,
+            DFD10_FZL
+        FROM
+            dw_file_detail_10
+        WHERE
+            DFD10_fssk BETWEEN #{start}
+            AND #{end}
+
+        <choose>
+            <when test="type != null and type != ''">
+                AND DFD10_FZL &lt;= 100
+                AND DFD10_FZL &gt;= 70
+            </when>
+            <otherwise>
+                AND DFD10_FZL &gt; 100
+            </otherwise>
+        </choose>
+        ORDER BY
+            DFD10_XGSMC,
+            DFD10_BZMC,
+            DFD10_XLMC
+
+    </select>
+</mapper>

+ 6 - 6
src/main/webapp/WEB-INF/config.properties

@@ -1,11 +1,11 @@
 #dataSource.driverClassName=com.mysql.jdbc.Driver
 dataSource.driverClassName=com.mysql.cj.jdbc.Driver
-#dataSource.url=jdbc:mysql://123.138.111.28:3506/dianwang?useUnicode=true&characterEncoding=UTF8
-#dataSource.username=dw_user
-#dataSource.password=123456
-dataSource.url=jdbc:mysql://127.0.0.1:3306/dianwang?useUnicode=true&characterEncoding=UTF8&serverTimezone=UTC
-dataSource.username=root
-dataSource.password=lang124578
+dataSource.url=jdbc:mysql://123.138.111.28:3506/dianwang?useUnicode=true&characterEncoding=UTF8&serverTimezone=Asia/Shanghai
+dataSource.username=dw_user
+dataSource.password=123456
+#dataSource.url=jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#dataSource.username=root
+#dataSource.password=Zmy1234567890
 
 
 config.MINDebug=false

+ 44 - 8
src/main/webapp/admin/ddy/reportManageDetailDdy.html

@@ -9,7 +9,8 @@
 <body class="content">
 	<div class="shadow-content" style="margin:1.5rem; text-align: center;">
 		<p id = "reportTitle" style="margin:15px; font-size : 20px"></p>
-		<table id="tableTest" lay-filter="tableFilter"></table>
+        <div id = "reportDiv" style = "margin : 20px; text-align : left;"></div>
+        <table id="tableTest" lay-filter="tableFilter"></table>
 	</div>
     <script>
     var ddyzymcSelect = new Array();
@@ -39,6 +40,21 @@
 	var form;
 	layui.use(['table','form', 'laydate'], function(){
 		$("#reportTitle").html(fileName);
+		//表头说明
+        $.request({
+            action : 'ReportManageAction/reportInfDetail',
+            data : {
+                reportId : reportId
+            },
+            success : function(data) {
+                // var resJSON = eval('(' + data.data.data + ')');
+                // var reportDesc = resJSON.descStr;
+                // $("#reportDiv").html(reportDesc);
+            },
+            error : function(data2) {
+                $.ErrorAlert(data2.MINErrorMessage);
+            }
+        });
 		table = layui.table;
 		var cols = [
 					{field:'xh', title: '序号',width:'5%'}
@@ -119,15 +135,35 @@
 			,page: true //开启分页
 			,cols: [cols]
 			,done: function(res, curr, count){
-				var ddysjTds = $("tbody").find('td[data-field="ddysj"]');
-				for (var i = 0; i < ddysjTds.length; i ++) {
+			    //低电压时长大于48的数据,标黄
+				var zmyyhsjs = $("tbody").find('td[data-field="yhbh"]');
+                var ddysjTds = $("tbody").find('td[data-field="ddysj"]');
+                //取结束时间
+                var ee  = strToDate(dayInterval.split("-")[1]);
+                var nowDataSj = $("tbody").find('td[data-field="' + dateToString(ee)+'"]');
+
+                for (var i = 0; i < ddysjTds.length; i ++) {
 					var ddysjTd = ddysjTds[i];
-					var ddysj = $(ddysjTd).find("div").html();
-					if (parseInt(ddysj) >= 48) {
-						$(ddysjTd).css("background-color", "rgb(233, 167, 41)");
-					}
+					var zmyyhsj = zmyyhsjs[i]
+                    var nowSj = nowDataSj[i];
+
+					var ddysj = $(ddysjTd).find("div").html();//总低电压时长
+                    var nowSjs = $(nowSj).find("div").html();//今天低电压时长
+                    if( ! nowSjs ) {
+                        nowSjs = "0";
+                    }
+                    if (parseInt(ddysj) >= 48) {//背景色-标黄-总数大于48小时
+						$(zmyyhsj).css("background-color", "rgb(233, 167, 41)");
+					}else if( 15 <= parseInt(ddysj) && parseInt(ddysj) < 48) {//背景色-标粉-15~48
+                        $(zmyyhsj).css("background-color", "#F581B1");
+                    }
+					if( parseInt(ddysj)- parseInt(nowSjs) < 48 && parseInt(ddysj) >= 48){//字体-红-昨天<48,今天>48
+                        $(zmyyhsj).css("color", "#ff0000");
+                    }
+                    if( parseInt(ddysj)- parseInt(nowSjs) < 15 && parseInt(ddysj) >= 15){//字体-红 昨天<15今天>15
+                        $(zmyyhsj).css("color", "#ff0000");
+                    }
 				}
-				
 				// 日期选择
 				var zlwcsjTds = $("tbody").find('td[data-field="zlwcsj"]');
 				for (var i = 0; i < zlwcsjTds.length; i ++) {

+ 4 - 0
src/main/webapp/admin/index.html

@@ -94,6 +94,10 @@
 .layui-tab-item{
 	height: 100%;
 }
+    .layui-nav-tree{
+        margin-top: 0 !important;
+        padding: 50px 0;
+    }
   </style>
 </head>
 <body class="kit-theme">

+ 2 - 2
src/main/webapp/admin/jtfjt/reportProduceJtfjt.html

@@ -89,8 +89,8 @@
 	
     <script>
 		var pageId = getQueryString("pageId");
-		var timeType = getQueryString("timeType");// 00日报01周报02月报
-		var reportType = getQueryString("reportType");// 00日报01周报02月报
+		var timeType = getQueryString("timeType");// 报表周期:00日报 01周报 02月报
+		var reportType = getQueryString("reportType");// 报表类型
 		// 日报
 		if (timeType == '00') {
 			$("#dayRange").show();

+ 248 - 0
src/main/webapp/admin/khxx/reportManageKhxx.html

@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>报表管理</title>
+    <script src="../../js/min-loader-next.js"></script>
+</head>
+<body class="content">
+	<div class="order-body">
+		<div class="order-tiaojian back-gray">
+			<div class="tiaojian-part1" id = "conditions">
+				<div class="fl f12-gray4-op">所选条件:</div>
+			</div>
+			<div class="tiaojian-part2 fr  demoTable">
+				<button class="order-bnt1 layui-btn" onclick="reloadSearch()" >查询</button>
+				<button class="layui-btn order-bnt2" onclick="reset()">重置</button>
+				<button class="order-bnt2 layui-btn" onclick="uploadExcel()">报表生成</button>
+				<a href="#" id="toggle" class="top">收起</a>
+			</div>
+		</div>
+		<form class="layui-form" action="" id = "formRole">
+			<div class="order-select back-border" id="content">
+				<div class="d-dashed" style="margin: 10px 0;"></div>
+				<div class="layui-inline">
+					<label class="f12-gray4">生成日期:</label>
+					<div class="layui-input-inline" style="position: relative;">
+						<input type="text" class="layui-input" id="date" placeholder="请选择日期" readOnly/>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="f12-gray4">文件名称:</label>
+					<input name="fileName"  id ="fileName" autocomplete="off" placeholder="请输入文件名称" class="search-select" onchange = "changeSelectCon(1,this,'inp')">
+				</div>
+			</div>
+		</form>
+	</div>
+	<div class="shadow-content" style="margin:1.5rem;">
+    	<table id="tableTest" lay-filter="tableFilter"></table>
+	</div>
+	<script type="text/html" id="barDemo">
+		<a class="layui-btn layui-btn-xs" lay-event="detail">详情查看</a>
+		{{#  if(timeType == '00'){ }}
+			<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
+		{{#  } }}
+     	<a class="layui-btn layui-btn-xs" lay-event="downLoad">下载</a>
+		<a class="layui-btn layui-btn-xs" lay-event="delete">删除</a>
+   	</script>
+	<script type="text/html" id="algorithmBar">
+		<a class="layui-btn layui-btn-xs" lay-event="algorithmDetail">查看</a>
+   	</script>
+    <script>
+		$("#toggle").click(function() {
+			$(this).html($("#content").is(":hidden") ? "收起" + "<i class='iconfont up iconSelect_drop-down'/></i>" : "展开" +
+				"<i class='iconfont up iconSelect_drop-down'/></i>");
+			$("#content").slideToggle();
+		});
+		var pageId = "270000";
+		// 报表类型
+		var reportType = getQueryString("reportType")
+
+		var timeType = getQueryString("timeType");// 00日报01周报02月报
+
+		 var table;
+		 var form;
+		 layui.use(['table','laydate','form'], function(){
+			  var laydate = layui.laydate;
+			  laydate.render({
+				  elem: '#date'
+				  ,type: 'date'
+				  ,range: true
+				  ,done: function(value, date, endDate){
+					  changeSelectCon(0,"date",'date',value)
+				  }
+			  });
+
+			  table = layui.table;
+
+			  // 加载数据
+			  table.render({
+				id: 'tableTest'
+				,elem: '#tableTest'
+				,limit:10
+				,url: 'ReportManageAction/reportInfQuery' //数据接口
+				,method: 'post'
+				,where:{MINView:"JSON", timeType : timeType, reportType : reportType}
+				,page: true //开启分页
+				,cols: [[ //表头
+				  {field:'num', title: '序号',width:'5%', type:'numbers', align: 'center'}
+				  ,{field: 'uploadDate', title: '生成时间', width:'15%', sort: true}
+				  ,{field: 'fileName', title: '报表名称', width:'30%'}
+				  ,{field: 'algorith', title: '算法', width: '10%', toolbar: '#algorithmBar'}
+				  ,{field: 'operate', title: '操作', width: '40%', toolbar: '#barDemo', fixed : 'right'}
+				]]
+				,done: function(res, curr, count){
+				}
+				,even: true //开启隔行背景
+			  });
+
+			 // 监听工具条(操作)
+			  table.on('tool(tableFilter)', function(obj){
+				//注:tool是工具条事件名,tableFilter是table原始容器的属性 lay-filter="对应的值"
+				var data = obj.data; //获得当前行数据
+				var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
+				var tr = obj.tr; //获得当前行 tr 的DOM对象
+				if (layEvent === 'detail'){ //查看
+					showDetail(data);
+				} else if(layEvent === 'downLoad'){
+					window.open("../../ReportManageAction/reportDownLoad?reportId=" + data.id);
+				} else if(layEvent === 'delete'){
+					layer.confirm('确认删除?', function(index){
+						layer.close(index);
+						$.request({
+							action : 'ReportManageAction/reportInfDelete',
+							data : {
+								reportId : data.id
+							},
+							success : function(data1) {
+								$.SuccAlert("操作成功!");
+								reloadSearch();
+							},
+							error : function(data2) {
+								$.ErrorAlert(data2.MINErrorMessage);
+							}
+						});
+					});
+				} else if (layEvent === 'edit'){ // 编辑
+					editReport(data);
+				} else if (layEvent === 'algorithmDetail'){ // 算法查看
+					algorithmDetail(data);
+				}
+			  });
+		 });
+
+		  function reloadSearch (t) {
+				var fileName = $("#fileName").val();
+				var date = $("#date").val();
+				//执行重载
+				table.reload('tableTest', {
+					page: {
+						curr: 1 //重新从第 1 页开始
+					}
+					,where: {
+						date : date,
+						fileName : fileName
+					}
+				 });
+			 if (t == 1) {
+				  $.Alert("修改成功");
+			 }
+		  }
+
+		  function reset(){
+			  $('#formRole')[0].reset();
+			  $("#conditions").html('<div class="fl f12-gray4-op">所选条件:</div>');
+		  }
+
+		  function uploadExcel(){
+			  var openPageId = pageId + "-01";
+			  openMainTabPage(openPageId, "报表生成", "jtfjt/reportProduceJtfjt.html?pageId="+openPageId+"&timeType="+timeType+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+
+		  function showDetail(data){
+			  var openPageId = pageId + "-02";
+			  openMainTabPage(openPageId, "详情查看", "jtfjt/reportManageDetailJtfjt.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, null);
+		  }
+		  function editReport(data){
+			  var openPageId = pageId + "-03";
+			  openMainTabPage(openPageId, "编辑", "tqtd/reportManageUpdateTqtd.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+		  function algorithmDetail(data){
+			var openPageId = pageId + "-04";
+			openMainTabPage(openPageId, "算法查看", "reprotManage/reportAlgorithm.html?pageId="+openPageId+"&reportTypeId="+data.typeId, '', pageId, null);
+		  }
+
+		function changeSelectCon(index, t, type, dateValue){
+			if (type == "date") {
+				if (isEmpty(dateValue)) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type,dateValue));
+					}
+				}
+			} else if (type == 'inp') {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			} else {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$(t).attr("id","subjects");
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			}
+		}
+
+		var array = new Array('生成日期','文件名称');
+		function getSelectConHtml(index, t, type,dateValue){
+			var name;
+			if (type == "date") {
+				name = $("#"+t).attr("id");
+			} else {
+				name = $(t).attr("id");
+			}
+			var value;
+			if(type == "inp"){
+				value = t.value.substr(0,5)+"..";
+			}
+			if (type == "date") {
+				value = dateValue;
+			}
+			if(type == "sel"){
+				value = $("#stateDiv").find("option:selected").text();
+			}
+			var html = '<div class="fl xuanzhong-active" id = "search' + index + '" name = "' + name + '" onclick = "removeSearch(this)">' +
+							'<div class="fl">' + array[index] + '</div>' +
+							':<span>'+value+'</span>' +
+							'<svg class="icon" aria-hidden="true">' +
+							  '<use xlink:href="#iconicon_close1"></use>' +
+							'</svg>' +
+						'</div>';
+			return html;
+		}
+		function removeSearch(t) {
+			if ($(t).attr("name") == 'subjects') {
+				initSelect('stateDiv', "COMPANY_STATE", "state", '', true);
+				form.render();
+				$(t).remove();
+			} else {
+				$("#"+$(t).attr("name")).val('');
+				$(t).remove();
+			}
+		}
+    </script>
+</body>
+
+</html>

+ 248 - 0
src/main/webapp/admin/pbgzz/reportManagePbgzz.html

@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>报表管理</title>
+    <script src="../../js/min-loader-next.js"></script>
+</head>
+<body class="content">
+	<div class="order-body">
+		<div class="order-tiaojian back-gray">
+			<div class="tiaojian-part1" id = "conditions">
+				<div class="fl f12-gray4-op">所选条件:</div>
+			</div>
+			<div class="tiaojian-part2 fr  demoTable">
+				<button class="order-bnt1 layui-btn" onclick="reloadSearch()" >查询</button>
+				<button class="layui-btn order-bnt2" onclick="reset()">重置</button>
+				<button class="order-bnt2 layui-btn" onclick="uploadExcel()">报表生成</button>
+				<a href="#" id="toggle" class="top">收起</a>
+			</div>
+		</div>
+		<form class="layui-form" action="" id = "formRole">
+			<div class="order-select back-border" id="content">
+				<div class="d-dashed" style="margin: 10px 0;"></div>
+				<div class="layui-inline">
+					<label class="f12-gray4">生成日期:</label>
+					<div class="layui-input-inline" style="position: relative;">
+						<input type="text" class="layui-input" id="date" placeholder="请选择日期" readOnly/>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="f12-gray4">文件名称:</label>
+					<input name="fileName"  id ="fileName" autocomplete="off" placeholder="请输入文件名称" class="search-select" onchange = "changeSelectCon(1,this,'inp')">
+				</div>
+			</div>
+		</form>
+	</div>
+	<div class="shadow-content" style="margin:1.5rem;">
+    	<table id="tableTest" lay-filter="tableFilter"></table>
+	</div>
+	<script type="text/html" id="barDemo">
+		<a class="layui-btn layui-btn-xs" lay-event="detail">详情查看</a>
+		{{#  if(timeType == '00'){ }}
+			<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
+		{{#  } }}
+     	<a class="layui-btn layui-btn-xs" lay-event="downLoad">下载</a>
+		<a class="layui-btn layui-btn-xs" lay-event="delete">删除</a>
+   	</script>
+	<script type="text/html" id="algorithmBar">
+		<a class="layui-btn layui-btn-xs" lay-event="algorithmDetail">查看</a>
+   	</script>
+    <script>
+		$("#toggle").click(function() {
+			$(this).html($("#content").is(":hidden") ? "收起" + "<i class='iconfont up iconSelect_drop-down'/></i>" : "展开" +
+				"<i class='iconfont up iconSelect_drop-down'/></i>");
+			$("#content").slideToggle();
+		});
+		var pageId = "270000";
+		// 报表类型
+		var reportType = getQueryString("reportType")
+
+		var timeType = getQueryString("timeType");// 00日报01周报02月报
+
+		 var table;
+		 var form;
+		 layui.use(['table','laydate','form'], function(){
+			  var laydate = layui.laydate;
+			  laydate.render({
+				  elem: '#date'
+				  ,type: 'date'
+				  ,range: true
+				  ,done: function(value, date, endDate){
+					  changeSelectCon(0,"date",'date',value)
+				  }
+			  });
+
+			  table = layui.table;
+
+			  // 加载数据
+			  table.render({
+				id: 'tableTest'
+				,elem: '#tableTest'
+				,limit:10
+				,url: 'ReportManageAction/reportInfQuery' //数据接口
+				,method: 'post'
+				,where:{MINView:"JSON", timeType : timeType, reportType : reportType}
+				,page: true //开启分页
+				,cols: [[ //表头
+				  {field:'num', title: '序号',width:'5%', type:'numbers', align: 'center'}
+				  ,{field: 'uploadDate', title: '生成时间', width:'15%', sort: true}
+				  ,{field: 'fileName', title: '报表名称', width:'30%'}
+				  ,{field: 'algorith', title: '算法', width: '10%', toolbar: '#algorithmBar'}
+				  ,{field: 'operate', title: '操作', width: '40%', toolbar: '#barDemo', fixed : 'right'}
+				]]
+				,done: function(res, curr, count){
+				}
+				,even: true //开启隔行背景
+			  });
+
+			 // 监听工具条(操作)
+			  table.on('tool(tableFilter)', function(obj){
+				//注:tool是工具条事件名,tableFilter是table原始容器的属性 lay-filter="对应的值"
+				var data = obj.data; //获得当前行数据
+				var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
+				var tr = obj.tr; //获得当前行 tr 的DOM对象
+				if (layEvent === 'detail'){ //查看
+					showDetail(data);
+				} else if(layEvent === 'downLoad'){
+					window.open("../../ReportManageAction/reportDownLoad?reportId=" + data.id);
+				} else if(layEvent === 'delete'){
+					layer.confirm('确认删除?', function(index){
+						layer.close(index);
+						$.request({
+							action : 'ReportManageAction/reportInfDelete',
+							data : {
+								reportId : data.id
+							},
+							success : function(data1) {
+								$.SuccAlert("操作成功!");
+								reloadSearch();
+							},
+							error : function(data2) {
+								$.ErrorAlert(data2.MINErrorMessage);
+							}
+						});
+					});
+				} else if (layEvent === 'edit'){ // 编辑
+					editReport(data);
+				} else if (layEvent === 'algorithmDetail'){ // 算法查看
+					algorithmDetail(data);
+				}
+			  });
+		 });
+
+		  function reloadSearch (t) {
+				var fileName = $("#fileName").val();
+				var date = $("#date").val();
+				//执行重载
+				table.reload('tableTest', {
+					page: {
+						curr: 1 //重新从第 1 页开始
+					}
+					,where: {
+						date : date,
+						fileName : fileName
+					}
+				 });
+			 if (t == 1) {
+				  $.Alert("修改成功");
+			 }
+		  }
+
+		  function reset(){
+			  $('#formRole')[0].reset();
+			  $("#conditions").html('<div class="fl f12-gray4-op">所选条件:</div>');
+		  }
+
+		  function uploadExcel(){
+			  var openPageId = pageId + "-01";
+			  openMainTabPage(openPageId, "报表生成", "jtfjt/reportProduceJtfjt.html?pageId="+openPageId+"&timeType="+timeType+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+
+		  function showDetail(data){
+			  var openPageId = pageId + "-02";
+			  openMainTabPage(openPageId, "详情查看", "jtfjt/reportManageDetailJtfjt.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, null);
+		  }
+		  function editReport(data){
+			  var openPageId = pageId + "-03";
+			  openMainTabPage(openPageId, "编辑", "tqtd/reportManageUpdateTqtd.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+		  function algorithmDetail(data){
+			var openPageId = pageId + "-04";
+			openMainTabPage(openPageId, "算法查看", "reprotManage/reportAlgorithm.html?pageId="+openPageId+"&reportTypeId="+data.typeId, '', pageId, null);
+		  }
+
+		function changeSelectCon(index, t, type, dateValue){
+			if (type == "date") {
+				if (isEmpty(dateValue)) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type,dateValue));
+					}
+				}
+			} else if (type == 'inp') {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			} else {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$(t).attr("id","subjects");
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			}
+		}
+
+		var array = new Array('生成日期','文件名称');
+		function getSelectConHtml(index, t, type,dateValue){
+			var name;
+			if (type == "date") {
+				name = $("#"+t).attr("id");
+			} else {
+				name = $(t).attr("id");
+			}
+			var value;
+			if(type == "inp"){
+				value = t.value.substr(0,5)+"..";
+			}
+			if (type == "date") {
+				value = dateValue;
+			}
+			if(type == "sel"){
+				value = $("#stateDiv").find("option:selected").text();
+			}
+			var html = '<div class="fl xuanzhong-active" id = "search' + index + '" name = "' + name + '" onclick = "removeSearch(this)">' +
+							'<div class="fl">' + array[index] + '</div>' +
+							':<span>'+value+'</span>' +
+							'<svg class="icon" aria-hidden="true">' +
+							  '<use xlink:href="#iconicon_close1"></use>' +
+							'</svg>' +
+						'</div>';
+			return html;
+		}
+		function removeSearch(t) {
+			if ($(t).attr("name") == 'subjects') {
+				initSelect('stateDiv', "COMPANY_STATE", "state", '', true);
+				form.render();
+				$(t).remove();
+			} else {
+				$("#"+$(t).attr("name")).val('');
+				$(t).remove();
+			}
+		}
+    </script>
+</body>
+
+</html>

+ 2 - 2
src/main/webapp/admin/reprotManage/dataWare.html

@@ -121,7 +121,7 @@
 		  
 		 // 监听工具条(操作)
 		  table.on('tool(tableFilter)', function(obj){ //注:tool是工具条事件名,tableFilter是table原始容器的属性 lay-filter="对应的值"
-		    var data = obj.data; //获得当前行数据
+		  	var data = obj.data; //获得当前行数据
 		    var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
 		    var tr = obj.tr; //获得当前行 tr 的DOM对象
 		    if (layEvent === 'detail'){ //查看
@@ -135,7 +135,7 @@
 						action : 'DataWareManageAction/fileInfDelete',
 						data : {
 							fileId : data.id,
-							fileType : data.type
+							fileType : data.type//文件类型
 						},
 						success : function(data1) {
 							$.SuccAlert("操作成功!");

+ 110 - 1
src/main/webapp/admin/reprotManage/dataWareDetail.html

@@ -14,7 +14,7 @@
 	var pageId = getQueryString("pageId");
 	var fileId = getQueryString("fileId");		//文件id
 	var fileType = getQueryString("fileType");	//文件类型
-	
+	console.log("pageId:"+pageId+",fileId:"+fileId+",fileType:"+fileType);
 	var cols = null;
 	
 	// 台区停电
@@ -138,6 +138,115 @@
             ,{field: 'handle', title: '处理纪事'}
             ,{field: 'errobrief', title: '异常概况'}
         ]];
+    }else if("1000008" == fileType){
+
+    }else if("1000009" == fileType){
+        cols = [[
+            {field:'sequ',title:'序号',width:60},
+            {field:'month',title:'月份',width:'100'},
+            {field:'unit',title:'单位',width:'100'},
+            {field:'bzmc',title:'班组名称',width:'100'},
+            {field:'gbmc',title:'公变名称',width:'100'},
+            {field:'xlmc',title:'线路名称',width:'200'},
+            {field:'fzl',title:'负载率(%)',width:'100'},
+            {field:'zdfzl',title:'最大负载率(%)',width:'100'},
+            {field:'zdfzlfssk',title:'最大负载率发生时刻',width:'150'},
+            {field:'edrl',title:'额定容量(kva)',width:'100'},
+            {field:'gzzyyfl',title:'过(重)载原因分类',width:'110'},
+            {field:'jtyy',title:'具体原因',width:'200',
+                templet: function(d,e,f){
+                    var jtyy = d.jtyy;
+                    if(jtyy){
+                        return "<p style='text-align: left'>"+jtyy+"</p>";
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'jjcsfl',title:'解决措施分类',width:'100'},
+            {field:'jtjjcs',title:'具体解决措施',width:'200',
+                templet: function(d,e,f){
+                    var jtyy = d.jtjjcs;
+                    if(jtyy){
+                        return "<p style='text-align: left'>"+jtyy+"</p>";
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'wcsj',title:'完成时间',width:'140',
+                templet: function(d){
+                    var wcsj = d.wcsj;
+                    if(wcsj){
+                        return wcsj.substr(0,10).replaceAll("-","/");
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'sxbphl',title:'三相不平衡率(%)',width:'150'},
+            {field:'axdl',title:'a相电流(a)',width:'100'},
+            {field:'bxdl',title:'b相电流(a)',width:'100'},
+            {field:'cxdl',title:'c相电流(a)',width:'100'},
+            {field:'gzsc',title:'过载时长(小时)',width:'100'},
+            {field:'yhsl',title:'用户数量',width:'100'},
+            {field:'zzsc',title:'重载时长',width:'100'},
+            {field:'pmsid',title:'PMSID',width:'200'},
+            {field:'yxid',title:'营销id',width:'100'}
+
+        ]];
+    }else if("1000010" == fileType){
+        cols = [[
+            {field:'sequ',title:'序号',width:60},
+            {field:'month',title:'月份',width:'100'},
+            {field:'xgsmc',title:'所属县公司',width:'100'},
+            {field:'bzmc',title:'班组名称',width:'150'},
+            {field:'bdzmc',title:'变电站名称',width:'100'},
+            {field:'xlmc',title:'线路名称',width:'100'},
+            {field:'eddl',title:'额定电流(a)',width:'100'},
+            {field:'fzl',title:'负载率(%)',width:'100'},
+            {field:'gzzyy',title:'过(重)载原因分类',width:'120'},
+            {field:'gzzjtyy',title:'具体原因',width:'200',
+                templet: function(d,e,f){
+                    var jtyy = d.gzzjtyy;
+                    if(jtyy){
+                        return "<p style='text-align: left'>"+jtyy+"</p>";
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'jjcsfl',title:'解决措施分类',width:'120'},
+            {field:'jtjjcs',title:'具体解决措施',width:'200',
+                templet: function(d,e,f){
+                    var jtyy = d.jtjjcs;
+                    if(jtyy){
+                        return "<p style='text-align: left'>"+jtyy+"</p>";
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'wcsj',title:'完成时间',width:'150',
+                templet: function(d){
+                    var wcsj = d.wcsj;
+                    if(wcsj){
+                        return wcsj.substr(0,10).replaceAll("-","/");
+                    }else{
+                        return "";
+                    }
+                }
+            },
+            {field:'gzsc',title:'过载时长(小时)',width:'100'},
+            {field:'yxdl',title:'运行电流(a)',width:'100'},
+            {field:'fssk',title:'发生时刻',width:'150'},
+            {field:'zddl',title:'最大电流(a)',width:'100'},
+            {field:'zdzfssk',title:'最大值发生时刻',width:'150'},
+            {field:'pbsl',title:'配变数量(台)',width:'100'},
+            {field:'pbrl',title:'配变容量(kva)',width:'100'},
+            {field:'sfzdh',title:'是否自动化',width:'100'},
+            {field:'pmsid',title:'PMSID',width:'200'}
+        ]];
     }
 	
      var table;

+ 17 - 2
src/main/webapp/admin/reprotManage/dataWareUpload.html

@@ -442,11 +442,26 @@
 		    	,accept: 'file' 
 		    	,field: 'file'
 	    	    ,exts: 'xls|xlsx'
-				,before: function(obj){ 
+				,before: function(obj){
+					//将每次选择的文件追加到文件队列
+					var files = obj.pushFile();
+					//预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
+					obj.preview(function(index, file, result){
+						console.log(index); //得到文件索引
+						console.log(file); //得到文件对象
+						console.log(result); //得到文件base64编码,比如图片
+
+						//obj.resetFile(index, file, '123.jpg'); //重命名文件名,layui 2.3.0 开始新增
+
+						//这里还可以做一些 append 文件列表 DOM 的操作
+
+						//obj.upload(index, file); //对上传失败的单个文件重新上传,一般在某个事件中使用
+						//delete files[index]; //删除列表中对应的文件,一般在某个事件中使用
+					});
 					var fileType = $("#fileTypeDiv").find("select option:selected").val();
    	    		    layer.load(); //上传loading
    	    		    this.data = {fileType : fileType, chongfuFlag : chongfuFlag};
-   	    		}
+				}
 			    ,done: function(res){
 			    	layer.closeAll('loading'); //关闭loading
 			    	if (res.code == 0) {

+ 57 - 0
src/main/webapp/admin/xlgzz/reportManageDetailXlgzz.html

@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>报告详情</title>
+    <script src="../../js/min-loader-next.js"></script>
+</head>
+<body class="content">
+	<div class="shadow-content" style="margin:1.5rem; text-align: center;">
+		<p id = "reportTitle" style="margin:15px; font-size : 20px"></p>
+    	<table id="reportTable" class="layui-table"></table>
+    	<div id = "reportDiv" style = "margin : 20px; text-align : left;"></div>
+    	<div id = "reportFujian" style = "margin : 20px; text-align : right;">
+    		<a style = "color : red;" onclick = "downLoadFujian()">附件下载</a>
+    	</div>
+	</div>
+    <script>
+	var pageId = getQueryString("pageId");
+	var reportId = getQueryString("reportId");		//报告id
+	var fileName = chineseUrlDecodeURI(getQueryString("fileName"));	//报告名称
+	
+	var type = getQueryString("type");				//报告类型00:excel 01:word
+	var typeId = getQueryString("typeId");			//报告类型id
+	var reportType = getQueryString("reportType");	//报告类型
+	
+	var cols = null;
+	
+	// word
+		$("#reportTable").hide();
+		$("#reportTitle").html(fileName);
+		$.request({
+			action : 'JtfjtReportAction/reportInfDetail',
+			data : {
+				reportId : reportId
+			},
+			success : function(data) {
+				var resJSON = eval('(' + data.data.data + ')');
+				var reportDesc = resJSON.descStr;
+				
+				$("#reportDiv").html(reportDesc);
+
+				if (reportType != "TQTDYB") {
+					$("#reportFujian").hide();
+				}
+			},
+			error : function(data2) {
+				$.ErrorAlert(data2.MINErrorMessage);
+			}
+	  	});
+	
+
+
+    </script>
+</body>
+
+</html>

+ 248 - 0
src/main/webapp/admin/xlgzz/reportManageXlgzz.html

@@ -0,0 +1,248 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>报表管理</title>
+    <script src="../../js/min-loader-next.js"></script>
+</head>
+<body class="content">
+	<div class="order-body">
+		<div class="order-tiaojian back-gray">
+			<div class="tiaojian-part1" id = "conditions">
+				<div class="fl f12-gray4-op">所选条件:</div>
+			</div>
+			<div class="tiaojian-part2 fr  demoTable">
+				<button class="order-bnt1 layui-btn" onclick="reloadSearch()" >查询</button>
+				<button class="layui-btn order-bnt2" onclick="reset()">重置</button>
+				<button class="order-bnt2 layui-btn" onclick="uploadExcel()">报表生成</button>
+				<a href="#" id="toggle" class="top">收起</a>
+			</div>
+		</div>
+		<form class="layui-form" action="" id = "formRole">
+			<div class="order-select back-border" id="content">
+				<div class="d-dashed" style="margin: 10px 0;"></div>
+				<div class="layui-inline">
+					<label class="f12-gray4">生成日期:</label>
+					<div class="layui-input-inline" style="position: relative;">
+						<input type="text" class="layui-input" id="date" placeholder="请选择日期" readOnly/>
+					</div>
+				</div>
+				<div class="layui-inline">
+					<label class="f12-gray4">文件名称:</label>
+					<input name="fileName"  id ="fileName" autocomplete="off" placeholder="请输入文件名称" class="search-select" onchange = "changeSelectCon(1,this,'inp')">
+				</div>
+			</div>
+		</form>
+	</div>
+	<div class="shadow-content" style="margin:1.5rem;">
+    	<table id="tableTest" lay-filter="tableFilter"></table>
+	</div>
+	<script type="text/html" id="barDemo">
+		<a class="layui-btn layui-btn-xs" lay-event="detail">详情查看</a>
+		{{#  if(timeType == '00'){ }}
+			<a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
+		{{#  } }}
+     	<a class="layui-btn layui-btn-xs" lay-event="downLoad">下载</a>
+		<a class="layui-btn layui-btn-xs" lay-event="delete">删除</a>
+   	</script>
+	<script type="text/html" id="algorithmBar">
+		<a class="layui-btn layui-btn-xs" lay-event="algorithmDetail">查看</a>
+   	</script>
+    <script>
+		$("#toggle").click(function() {
+			$(this).html($("#content").is(":hidden") ? "收起" + "<i class='iconfont up iconSelect_drop-down'/></i>" : "展开" +
+				"<i class='iconfont up iconSelect_drop-down'/></i>");
+			$("#content").slideToggle();
+		});
+		var pageId = "270000";
+		// 报表类型
+		var reportType = getQueryString("reportType")
+
+		var timeType = getQueryString("timeType");// 00日报01周报02月报
+
+		 var table;
+		 var form;
+		 layui.use(['table','laydate','form'], function(){
+			  var laydate = layui.laydate;
+			  laydate.render({
+				  elem: '#date'
+				  ,type: 'date'
+				  ,range: true
+				  ,done: function(value, date, endDate){
+					  changeSelectCon(0,"date",'date',value)
+				  }
+			  });
+
+			  table = layui.table;
+
+			  // 加载数据
+			  table.render({
+				id: 'tableTest'
+				,elem: '#tableTest'
+				,limit:10
+				,url: 'ReportManageAction/reportInfQuery' //数据接口
+				,method: 'post'
+				,where:{MINView:"JSON", timeType : timeType, reportType : reportType}
+				,page: true //开启分页
+				,cols: [[ //表头
+				  {field:'num', title: '序号',width:'5%', type:'numbers', align: 'center'}
+				  ,{field: 'uploadDate', title: '生成时间', width:'15%', sort: true}
+				  ,{field: 'fileName', title: '报表名称', width:'30%'}
+				  ,{field: 'algorith', title: '算法', width: '10%', toolbar: '#algorithmBar'}
+				  ,{field: 'operate', title: '操作', width: '40%', toolbar: '#barDemo', fixed : 'right'}
+				]]
+				,done: function(res, curr, count){
+				}
+				,even: true //开启隔行背景
+			  });
+
+			 // 监听工具条(操作)
+			  table.on('tool(tableFilter)', function(obj){
+				//注:tool是工具条事件名,tableFilter是table原始容器的属性 lay-filter="对应的值"
+				var data = obj.data; //获得当前行数据
+				var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
+				var tr = obj.tr; //获得当前行 tr 的DOM对象
+				if (layEvent === 'detail'){ //查看
+					showDetail(data);
+				} else if(layEvent === 'downLoad'){
+					window.open("../../ReportManageAction/reportDownLoad?reportId=" + data.id);
+				} else if(layEvent === 'delete'){
+					layer.confirm('确认删除?', function(index){
+						layer.close(index);
+						$.request({
+							action : 'ReportManageAction/reportInfDelete',
+							data : {
+								reportId : data.id
+							},
+							success : function(data1) {
+								$.SuccAlert("操作成功!");
+								reloadSearch();
+							},
+							error : function(data2) {
+								$.ErrorAlert(data2.MINErrorMessage);
+							}
+						});
+					});
+				} else if (layEvent === 'edit'){ // 编辑
+					editReport(data);
+				} else if (layEvent === 'algorithmDetail'){ // 算法查看
+					algorithmDetail(data);
+				}
+			  });
+		 });
+
+		  function reloadSearch (t) {
+				var fileName = $("#fileName").val();
+				var date = $("#date").val();
+				//执行重载
+				table.reload('tableTest', {
+					page: {
+						curr: 1 //重新从第 1 页开始
+					}
+					,where: {
+						date : date,
+						fileName : fileName
+					}
+				 });
+			 if (t == 1) {
+				  $.Alert("修改成功");
+			 }
+		  }
+
+		  function reset(){
+			  $('#formRole')[0].reset();
+			  $("#conditions").html('<div class="fl f12-gray4-op">所选条件:</div>');
+		  }
+
+		  function uploadExcel(){
+			  var openPageId = pageId + "-01";
+			  openMainTabPage(openPageId, "报表生成", "xlgzz/reportProduceXlgzz.html?pageId="+openPageId+"&timeType="+timeType+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+
+		  function showDetail(data){
+			  var openPageId = pageId + "-02";
+			  openMainTabPage(openPageId, "详情查看", "xlgzz/reportManageDetailXlgzz.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, null);
+		  }
+		  function editReport(data){
+			  var openPageId = pageId + "-03";
+			  openMainTabPage(openPageId, "编辑", "tqtd/reportManageUpdateTqtd.html?pageId="+openPageId+"&reportId="+data.id+"&type="+data.type+"&typeId="+data.typeId+"&fileName="+chineseUrlEncode(data.fileName)+"&reportType="+reportType, '', pageId, reloadSearch);
+		  }
+		  function algorithmDetail(data){
+			var openPageId = pageId + "-04";
+			openMainTabPage(openPageId, "算法查看", "reprotManage/reportAlgorithm.html?pageId="+openPageId+"&reportTypeId="+data.typeId, '', pageId, null);
+		  }
+
+		function changeSelectCon(index, t, type, dateValue){
+			if (type == "date") {
+				if (isEmpty(dateValue)) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type,dateValue));
+					}
+				}
+			} else if (type == 'inp') {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			} else {
+				if (isEmpty($(t).val())) {
+					$("#search" + index).remove();
+				} else {
+					$("#search" + index).remove();
+					if (isEmpty($("#search" + index).attr("name"))) {
+						$(t).attr("id","subjects");
+						$("#conditions").append(getSelectConHtml(index, t, type));
+					}
+				}
+			}
+		}
+
+		var array = new Array('生成日期','文件名称');
+		function getSelectConHtml(index, t, type,dateValue){
+			var name;
+			if (type == "date") {
+				name = $("#"+t).attr("id");
+			} else {
+				name = $(t).attr("id");
+			}
+			var value;
+			if(type == "inp"){
+				value = t.value.substr(0,5)+"..";
+			}
+			if (type == "date") {
+				value = dateValue;
+			}
+			if(type == "sel"){
+				value = $("#stateDiv").find("option:selected").text();
+			}
+			var html = '<div class="fl xuanzhong-active" id = "search' + index + '" name = "' + name + '" onclick = "removeSearch(this)">' +
+							'<div class="fl">' + array[index] + '</div>' +
+							':<span>'+value+'</span>' +
+							'<svg class="icon" aria-hidden="true">' +
+							  '<use xlink:href="#iconicon_close1"></use>' +
+							'</svg>' +
+						'</div>';
+			return html;
+		}
+		function removeSearch(t) {
+			if ($(t).attr("name") == 'subjects') {
+				initSelect('stateDiv', "COMPANY_STATE", "state", '', true);
+				form.render();
+				$(t).remove();
+			} else {
+				$("#"+$(t).attr("name")).val('');
+				$(t).remove();
+			}
+		}
+    </script>
+</body>
+
+</html>

+ 464 - 0
src/main/webapp/admin/xlgzz/reportProduceXlgzz.html

@@ -0,0 +1,464 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <title>导入</title>
+    <script src="../../js/min-loader-next.js"></script>
+    <script src="../../js/report.js"></script>
+	<script src="../../js/commutils.js"></script>
+    <link rel="stylesheet" href="../../plugins/layui/lay/modules/steps/style.css"></link>
+    <style>
+    	.layui-input {
+    		width : 200px;
+    	}
+    	.layui-upload-drag .layui-icon {
+    		font-size: 18px;
+		    color: #fff;
+		}
+		.layui-btn-sm {
+		    height: 22px;
+		    line-height: 22px;
+		    padding: 0 10px;
+		    font-size: 12px;
+		}
+    </style>
+</head>
+<body class="content">
+	<div id="step_demo" class="step-body" style = "margin-top : 20px; margin-left: 10%;">
+	    <div class="step-header" style="width:80%;overflow: hidden;">
+	        <ul>
+	            <li>
+	                <span class="step-name">选择报告/报表</span>
+	            </li>
+	            <li>
+	                <span class="step-name">选择文件</span>
+	            </li>
+	            <li>
+	                <span class="step-name">数据预览</span>
+	            </li>
+	            <li>
+	                <span class="step-name">生成报告/报表</span>
+	            </li>
+	        </ul>
+	    </div>
+	</div>
+	<div class="order-body" style = "width: 80%; margin-left : 10%;height : 450px" name = "step">
+		<form class="layui-form" style = "text-align : center;">
+			<div class="order-select" id="content" style = "background: #FFFFFF;border-radius: 8px;padding: 16px 1.4rem;">
+				<div class="layui-inline" style="margin-top: 150px;">
+					<label class="f12-gray4">请选择文件类型:</label>
+					<div id = "reportTypeDiv" class="layui-inline">
+					</div>
+				</div>
+				<div style="margin-top : 200px;">
+			      <button type="button" class="layui-btn" style = "width : 214px" onclick = "goStep(2)">下一步</button>
+			    </div>
+			</div>
+		</form>
+	</div>
+	<div name = "step" style = "width: 80%; margin-left : 10%;height : 300px; display : none; text-align : center;">
+		<div style = "width: 80%; margin-left : 0px; height : 200px" class = "layui-upload-drag" >
+		  	<input type="text" style = "display : inline-block" class="layui-input" id="dayRange" placeholder="请选择报表日期" readonly>
+		  	<input type="text" style = "display : inline-block" class="layui-input" id="dateRange" placeholder="请选择报表日期范围" readonly>
+		  	<input type="text" style = "display : inline-block" class="layui-input" id="timeRange" placeholder="请选择报表时间段" readonly>
+		</div>
+		<div style="margin-top : 50px;">
+	      <button type="button" class="layui-btn" style = "width : 214px" onclick = "tableYulan()">下一步</button>
+	    </div>
+	</div>
+	<!--第三步-->
+	<div name = "step" style = "width: 80%; margin-left : 10%; height : 300px;display : none; text-align : center;">
+		<div style = "width: 80%; margin-left : 0px;" class = "layui-upload-drag" >
+		  <p id = "fileName" contenteditable="true">国网泰安供电公司2020年8月份配网运行分析月报</p>
+			<!--表格-->
+<!--
+		  <table id = "reportTable" class="layui-table" style = "display : none"></table>
+-->		  <div class="layui-tab" lay-filter="demo"  style="min-height: 400px;">
+			<ul class="layui-tab-title">
+				<li class="layui-this" lay-id="11">线路重载明细</li>
+				<li lay-id="22">公变重载明细</li>
+				<li lay-id="33">抢修类工单报表</li>
+
+			</ul>
+			<div class="layui-tab-content">
+				<div class="layui-tab-item layui-show">
+					<p>&nbsp;&nbsp;&nbsp;&nbsp;监测发现线路重载9条,分别为岱岳6条、泰山3条,其中岱岳司家庄线,重载时长最长7.83小时,平均负载率为79%。不涉及电采暖线路。 <br>注:线路负载率持续1小时在70%-100%为重载,持续1小时在100%以上为过载</p>
+					<table id="demo" lay-filter="test"></table>
+				</div>
+				<div class="layui-tab-item">
+					<p>&nbsp;&nbsp;&nbsp;&nbsp;
+						监测发现公变重载53个,分别为泰山35个、岱岳11个、高新7个,其中泰山上高所凤台村公变,重载时长最长2小时,平均负载率为93.67%。不涉及电采暖台区监测发现公变过载7个,分别为泰山6个、岱岳1个,其中泰山金星小区,过载时长2小时,平均负载率192.92%。不涉及电采暖台区。
+						<br>注:配变负载率连续2小时在80%-100%之间为重载,连续2小时在100%以上为过载。</p>
+					<table id="demo2" lay-filter="test"></table>
+				</div>
+				<div class="layui-tab-item">
+					<p>&nbsp;&nbsp;&nbsp;&nbsp;受理抢修类工单47件,万户报修率0.181,全省排名第5,报修率较低的为东平,较高的为岱岳。抢修到达现场及时率100%;岱岳超70分钟工单2件。" +
+						"疑似虚假回单0件。无因报修引发的诉求升级工单。全年累计受理抢修类工单305件,万户报修率1.173,全省排名第3。不涉及电采暖用户</p>
+					<table id="demo3" lay-filter="test"></table>
+				</div>
+
+			</div>
+		</div>
+		  <p id = "gongjubiao">报表关联的工具表为《
+			  <a id = "utilName" onclick = "goUtilDetail(this)">2020年6月底低电压月报工具表</a>》
+			  关联的报表算法为《
+			  <a id = "algorithmName" onclick = "goAlgorithmDetail(this)">国网泰安供电公司2020年8月份配网运行分析月报</a>》    的算法</p>
+		  <div id = "reportDiv" style = "display : none;text-align : left;"></div>
+		</div>
+		<div style="margin-top : 50px;">
+	      <button type="button" class="layui-btn" style = "width : 214px" onclick = "goStep(4)">下一步</button>
+	    </div>
+	</div>
+	<div name = "step" style = "width: 80%; margin-left : 10%;height : 300px; display : none; text-align : center; margin-top : 50px;">
+		<i class="layui-icon layui-icon-ok-circle" style="font-size: 100px; color: #009688;"></i>
+		<p style = "font-weight: 700;font-size: 25px;">报表生成成功!</p>
+		<p style = " color: #b2bbc2;">可在数据仓库-报表管理进行查看</p>
+		<div style="margin-top : 100px;">
+	      <button type="button" class="layui-btn" style = "width : 214px" onclick = "finish()">完成</button>
+	    </div>
+	</div>
+	
+    <script>
+		var pageId = getQueryString("pageId");
+		var timeType = getQueryString("timeType");// 报表周期:00日报 01周报 02月报
+		var reportType = getQueryString("reportType");// 报表类型
+		// 日报
+		if (timeType == '00') {
+			$("#dayRange").show();
+			$("#dateRange").hide();
+		// 周报和月报
+		} else {
+			$("#dayRange").hide();
+			$("#dateRange").show();
+		}
+		
+		var $step;
+		layui.config({
+	        base: '../../plugins/layui/lay/modules/steps/'
+	    }).use(['steps','jquery'],function(){
+	    	var $ = layui.$;
+    	    $step = $("#step_demo").step();
+		})
+		layui.use('element', function(){
+			var element = layui.element;
+			//一些事件触发
+			element.on('tab(demo)', function(data){
+				console.log(data);
+			});
+		});
+		layui.use('laydate', function(){
+			var laydate = layui.laydate;
+			// 报告日报日期选择
+			laydate.render({
+				elem : '#dayRange'
+				,format : 'yyyyMMdd'
+				,done: function(value, date, endDate){
+					var fileName = $("#fileName").html();
+					if (fileName.indexOf("-") != -1) {
+						$("#fileName").html(fileName.split("-")[0]+value);
+					} else {
+						$("#fileName").html(fileName+"-" + value);
+					}
+				}
+			});
+			// 报告日期范围选择
+			laydate.render({
+				elem : '#dateRange'
+				,format : 'yyyyMMdd'
+				,range : true
+				,done: function(value, date, endDate){
+					var fileName = $("#fileName").html();
+					if (fileName.indexOf("-") != -1) {
+						$("#fileName").html(fileName.split("-")[0]+value);
+					} else {
+						$("#fileName").html(fileName+"-" + value);
+					}
+				}
+			});
+			//时间范围
+			laydate.render({ 
+			  elem : '#timeRange'
+			  ,type : 'time'
+			  ,format : 'HHmmss'
+			  ,value : '000000 - 235959'
+			  ,range : true
+			});
+		});
+		var $table;
+		layui.use('table', function(){
+			$table = layui.table;
+		});
+		// 范围类型
+		layui.use('form', function(){
+			var form = layui.form;
+			$.request({
+				action : 'BranchReportTypeAction/branchReportTypeQuery',
+				data : {
+					reportType : reportType
+				},
+				success : function(data) {
+					var html = '<select id = "reportType" lay-filter="reportTypeFilter"><option value = "">请选择</option>';
+					var fileTypeList = data.data;
+					for (var i = 0; i < fileTypeList.length; i ++) {
+						var fileTypeInf = fileTypeList[i];
+						html += '<option value = "' + fileTypeInf.id + '_' + fileTypeInf.type + '_' + fileTypeInf.timeType + '">' + fileTypeInf.name + '</option>';
+					}
+					html += '</select>';
+					$("#reportTypeDiv").html(html);
+					form.render();
+				},
+				error : function(data2) {
+					$.ErrorAlert(data2.MINErrorMessage);
+				}
+    	  	});
+			// 加载算法
+			form.on('select(reportTypeFilter)', function(data){
+				var value = data.value;
+				if (!isEmpty(value)) {
+					var reportTypeId = value.split("_")[0];
+					
+					$("#fileName").html(data.elem.selectedOptions[0].text);
+					
+					if (!isEmpty(reportTypeId)) {
+						  $.request({
+								action : 'BranchReportTypeAction/fileTypeOfReportType',
+								data : {
+									reportTypeId : reportTypeId
+								},
+								success : function(data) {
+									fileType = data.data;
+									setTempVal("fileType", fileType);
+									
+									var utilDataInf = data.utilDataInf;
+									if (!isEmpty(utilDataInf)) {
+										$("#utilName").html(utilDataInf.fileName);
+										$("#utilName").attr("fileName", utilDataInf.fileName);
+										setTempVal("utilExcelDataDetail", utilDataInf.excelData);
+										var algorithmInf = data.algorithmInf;
+										if (!isEmpty(algorithmInf)) {
+											$("#algorithmName").html(utilDataInf.fileName+"算法");
+											$("#algorithmName").attr("reportTypeId", reportTypeId);
+										}
+									}
+									
+								},
+								error : function(data2) {
+									$.ErrorAlert(data2.MINErrorMessage);
+								}
+				    	  });
+					  }
+				}
+			});      
+		})
+		
+		function goStep (step) {
+			var reportInf = $("#reportTypeDiv").find("select option:selected").val();
+			
+			var dayRange = $("#dayRange").val();
+			var dateRange = $("#dateRange").val();
+			var timeRange = $("#timeRange").val();
+			if (step == 2) {
+				if (isEmpty(reportInf)) {
+					$.ErrorAlert("请选择上传文件类型!");
+					return;
+				}
+			}
+			
+			if (step == 4) {//完成
+				var fileName = $("#fileName").html();
+				var range = null;
+				if (timeType == '00') {
+					range = dayRange + "-" + dayRange;
+				} else {
+					range = dateRange;
+				}
+				var monthNum = $("#monthNum").html();
+				var countNum = $("#countNum").html();
+				$.request({
+					action : 'ReportManageAction/fileInfReportSubmit',
+					data : {
+						reportData : JSON.stringify(resJsonStr),
+						reportInf : reportInf,
+						fileName : fileName,
+						range : range,
+						timeRange : timeRange,
+						monthNum : monthNum,
+						countNum : countNum
+					},
+					success : function(data) {
+						if (data.code == 0) {
+							$step.goStep(step);
+							var stepDiv = $("div[name = 'step']");
+							for (var i = 0; i < stepDiv.length; i ++) {
+								if (step == (i + 1)) {
+									$(stepDiv[i]).show();
+								} else {
+									$(stepDiv[i]).hide();
+								}
+							}
+				    	} else {
+				    		$.ErrorAlert(res.MINErrorMessage);
+				    	}
+					},
+					error : function(data2) {
+						$.ErrorAlert(data2.MINErrorMessage);
+					}
+	    	  	});
+				return;
+			}
+			
+			$step.goStep(step);
+			var stepDiv = $("div[name = 'step']");
+			for (var i = 0; i < stepDiv.length; i ++) {
+				if (step == (i + 1)) {
+					$(stepDiv[i]).show();
+				} else {
+					$(stepDiv[i]).hide();
+				}
+			}
+		}
+		
+		function finish() {
+			deleteTabPageParent(pageId); 
+		}
+		
+
+		// 报表返回数据
+		var resJsonStr = null;
+		// 预览
+		function tableYulan() {
+			var data = [];
+			for (var i =0;i<100;i++){
+				data.push({id:i,username:'2',sex:'3',city:'4',sign:'5'});
+			}
+			$table.render({
+				elem: '#demo'
+				,limit:100
+				,cols: [[ //表头
+					{field: 'id', title: 'ID', width:80}
+					,{field: 'username', title: '用户名', width:80}
+					,{field: 'sex', title: '性别', width:80}
+					,{field: 'city', title: '城市', width:80}
+					,{field: 'sign', title: '签名', width: 177}
+				]],
+				data:data
+			});
+			$table.render({
+				elem: '#demo2'
+				,limit:100
+				,cols: [[ //表头
+					{field: 'id', title: 'ID', width:80}
+					,{field: 'username', title: '用户名', width:80}
+					,{field: 'sex', title: '性别', width:80}
+					,{field: 'city', title: '城市', width:80}
+					,{field: 'sign', title: '签名', width: 177},
+					{field: 'id', title: 'ID2', width:80}
+					,{field: 'username', title: '用户名2', width:80}
+					,{field: 'sex', title: '性别2', width:80}
+					,{field: 'city', title: '城市2', width:80}
+					,{field: 'sign', title: '签名2', width: 177},
+					{field: 'id', title: 'ID3', width:80}
+					,{field: 'username', title: '用户名3', width:80}
+					,{field: 'sex', title: '性别3', width:80}
+					,{field: 'city', title: '城市3', width:80}
+					,{field: 'sign', title: '签名3', width: 177},
+					{field: 'id', title: 'ID4', width:80}
+					,{field: 'username', title: '用户名4', width:80}
+					,{field: 'sex', title: '性别4', width:80}
+					,{field: 'city', title: '城市4', width:80}
+					,{field: 'sign', title: '签名4', width: 177}
+				]],
+				data:data
+			});
+			$table.render({
+				elem: '#demo3'
+				,limit:100
+				,cols: [[ //表头
+					{field: 'id', title: 'ID', width:80}
+					,{field: 'username', title: '用户名', width:80}
+					,{field: 'sex', title: '性别', width:80}
+					,{field: 'city', title: '城市', width:80}
+					,{field: 'sign', title: '签名', width: 177},
+					{field: 'id', title: 'ID2', width:80}
+					,{field: 'username', title: '用户名2', width:80}
+					,{field: 'sex', title: '性别2', width:80}
+					,{field: 'city', title: '城市2', width:80}
+					,{field: 'sign', title: '签名2', width: 177},
+					{field: 'id', title: 'ID3', width:80}
+					,{field: 'username', title: '用户名3', width:80}
+					,{field: 'sex', title: '性别3', width:80}
+					,{field: 'city', title: '城市3', width:80}
+					,{field: 'sign', title: '签名3', width: 177},
+					{field: 'id', title: 'ID4', width:80}
+					,{field: 'username', title: '用户名4', width:80}
+					,{field: 'sex', title: '性别4', width:80}
+					,{field: 'city', title: '城市4', width:80}
+					,{field: 'sign', title: '签名4', width: 177}
+				]],
+				data:data
+			});
+			var reportInf = $("#reportTypeDiv").find("select option:selected").val();//所选报表类型
+			var dayRange = $("#dayRange").val();//日报-年月日
+			var dateRange = $("#dateRange").val();//周报-年月日-年月日
+			var timeRange = $("#timeRange").val();//日报-时分秒
+			
+			// 日报
+			if (timeType == '00') {
+				if (isEmpty(dayRange)) {
+					$.ErrorAlert("请选择报表日期!");
+					return;
+				}
+			} else {
+				if (isEmpty(dateRange)) {
+					$.ErrorAlert("请选择报表日期范围!");
+					return;
+				}
+			}
+			
+			// 日报
+			var range = null;
+			if (timeType == '00') {
+				range = dayRange + "-" + dayRange;
+			} else {
+				range = dateRange;
+			}
+			var monthNum = $("#monthNum").html();
+			var countNum = $("#countNum").html();
+			// 查询符合条件的明细数据,生成预览数据
+			$.request({
+				action : 'XlgzzReportAction/reportNeedDataDetail',
+				data : {
+					range : range,//日报时间
+					timeRange : timeRange,//日报时间
+					reportInf : reportInf,//报表名称
+					monthNum : monthNum,//无用
+					countNum : countNum//无用
+				},
+				success : function(data) {debugger
+					if (data.code == 0) {//查询结果集成功
+						// 日报
+						if (timeType == '00') {
+							$("#gongjubiao").hide();
+							$("#reportTable").show();
+							var excelList = data.data.resList;
+							initExcelData(excelList, "reportTable", false,true);
+							goStep(3);
+						// 月报 或 周报
+						} else if (timeType == '02' || timeType == '01') {
+
+						}
+						
+			    	} else {
+			    		$.ErrorAlert(res.MINErrorMessage);
+			    	}
+				},
+				error : function(data2) {
+					$.ErrorAlert(data2.MINErrorMessage);
+				}
+    	  	});
+		}
+    </script>
+</body>
+
+</html>

+ 53 - 0
src/main/webapp/js/commutils.js

@@ -0,0 +1,53 @@
+/**
+ * 去空格
+ * @param str
+ * @param is_global
+ * @returns {*}
+ * @constructor
+ */
+function Trim(str,is_global) {
+    var result;
+    result = str.replace(/(^\s+)|(\s+$)/g,"");
+    if(is_global.toLowerCase()=="g") {
+        result = result.replace(/\s/g,"");
+    }
+    return result;
+}
+
+/**
+ * 获取起始日期一周时间范围
+ * @param obj
+ * @returns {string}
+ */
+function getThisWeekDate(obj){
+    if(!obj){
+        return "";
+    }
+    //验证是日期格式yyy-MM-dd hh:mm:ss,yyyy-MM-dd
+    var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))( (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9])?$/;
+    var nowdate = obj.nowdate;
+    var isDateTime = reDateTime.test(nowdate);
+    if (!isDateTime) {
+        return nowdate + "日期格式不合法";
+    } else {
+        //校验日期合法性
+        var tempDate = new Date(nowdate);
+        var year = tempDate.getFullYear();
+        var month = tempDate.getMonth() + 1;
+        var day = tempDate.getDate();
+        if(month - 10 < 0){
+            month = "0" + month
+        }
+        if(day - 10 < 0){
+            day = "0" + day
+        }
+        var temp = year + "-" + month + "-" + day;
+        if(Trim(nowdate,"g") == Trim(temp,"g")){
+            var myDate = new Date(nowdate);
+            myDate.setDate(myDate.getDate() + 7);
+            return nowdate + "~" + myDate.getFullYear()+"-" + (myDate.getMonth()+1)+"-" + myDate.getDate()
+        }else{
+            return nowdate + "日期不合法";
+        }
+    }
+}