Browse Source

git-svn-id: svn+ssh://10.10.101.21/source/platform/platform-b2b@719 f3bf4e98-0cf0-11e4-a00c-a99a8b9d557d

administrator 11 years ago
parent
commit
089ad7085b

+ 16 - 5
src/main/java/com/uas/platform/b2b/controller/UsageLogController.java

@@ -2,6 +2,7 @@ package com.uas.platform.b2b.controller;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.concurrent.Callable;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -53,13 +54,23 @@ public class UsageLogController {
 	 * @return
 	 */
 	@RequestMapping(value = "/xls", method = RequestMethod.GET)
-	public ModelAndView exportUsageLogs() {
-		Map<String, Object> map = new HashMap<String, Object>();
-		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
+	public Callable<ModelAndView> exportUsageLogs() {
+		final PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
 		pageInfo.sorting("time", Direction.DESC);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
-		map.put("data", usageLogSerice.findAllByPageInfo(pageInfo).getContent());
-		return new ModelAndView(new JxlsExcelView("classpath:jxls-tpl/UsageLog", "平台使用日志"), map);
+		final String author = SystemSession.getUser().getUserName();
+		return new Callable<ModelAndView>() {
+
+			@Override
+			public ModelAndView call() throws Exception {
+				Map<String, Object> map = new HashMap<String, Object>();
+				long t1 = System.currentTimeMillis();
+				map.put("data", usageLogSerice.findAllByPageInfo(pageInfo).getContent());
+				System.out.println(System.currentTimeMillis() - t1);
+				return new ModelAndView(new JxlsExcelView("classpath:jxls-tpl/UsageLog", "平台使用日志", author), map);
+			}
+
+		};
 	}
 
 }

+ 6 - 4
src/main/java/com/uas/platform/b2b/erp/controller/ErpLogController.java

@@ -14,10 +14,10 @@ import org.springframework.web.servlet.ModelAndView;
 
 import com.uas.platform.b2b.erp.model.ErpLog;
 import com.uas.platform.b2b.erp.service.ErpLogService;
-import com.uas.platform.b2b.support.JxlsExcelView;
 import com.uas.platform.b2b.support.SystemSession;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
+import com.uas.platform.core.web.view.XmlExcelView;
 
 /**
  * ERP数据传输日志
@@ -54,12 +54,14 @@ public class ErpLogController {
 	 */
 	@RequestMapping(value = "/xls", method = RequestMethod.GET)
 	public ModelAndView exportErpLogs() {
-		Map<String, Object> map = new HashMap<String, Object>();
-		PageInfo pageInfo = new PageInfo(1, JxlsExcelView.MAX_SIZE, 0);
+		final PageInfo pageInfo = new PageInfo(1, XmlExcelView.BUFFER_SIZE, 0);
 		pageInfo.sorting("time", Direction.DESC);
 		pageInfo.filter("enUU", SystemSession.getUser().getEnterprise().getUu());
+		Map<String, Object> map = new HashMap<String, Object>();
+		long t1 = System.currentTimeMillis();
 		map.put("data", erpLogService.findAllByPageInfo(pageInfo).getContent());
-		return new ModelAndView(new JxlsExcelView("classpath:jxls-tpl/ErpLog", "数据传输日志"), map);
+		System.out.println(System.currentTimeMillis() - t1);
+		return new ModelAndView(new XmlExcelView("classpath:jxls-tpl/ErpLog", "数据传输日志"), map);
 	}
 
 }

+ 34 - 0
src/main/java/com/uas/platform/b2b/support/AsyncService.java

@@ -0,0 +1,34 @@
+package com.uas.platform.b2b.support;
+
+/**
+ * 异步服务接口
+ * 
+ * @author yingp
+ *
+ */
+public interface AsyncService {
+	/**
+	 * 异步操作
+	 *
+	 * @param cacheKey
+	 * @throws Exception
+	 */
+	void doAsync(String cacheKey) throws Exception;
+
+	/**
+	 * 获取执行进度信息
+	 *
+	 * @param cacheKey
+	 * @return
+	 * @throws Exception
+	 */
+	Object getProcess(String cacheKey) throws Exception;
+
+	/**
+	 * 执行完成后
+	 *
+	 * @param cacheKey
+	 * @throws Exception
+	 */
+	void afterCompletion(String cacheKey) throws Exception;
+}

+ 35 - 4
src/main/java/com/uas/platform/b2b/support/JxlsExcelView.java

@@ -1,6 +1,8 @@
 package com.uas.platform.b2b.support;
 
 import java.net.URLEncoder;
+import java.util.Date;
+import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
@@ -17,6 +19,7 @@ import org.springframework.web.servlet.support.RequestContextUtils;
 import org.springframework.web.servlet.view.document.AbstractExcelView;
 
 import com.uas.platform.b2b.core.util.ContextUtils;
+import com.uas.platform.b2b.core.util.DateFormatUtils;
 
 /**
  * 利用jxls模板生成excel
@@ -35,7 +38,7 @@ public class JxlsExcelView extends AbstractExcelView {
 
 	private static final String EXTENSION = ".xls";
 
-	public JxlsExcelView(String tplPath, String fileName) {
+	public JxlsExcelView(String tplPath, String fileName, String author) {
 		super();
 		setUrl(tplPath);
 		this.fileName = fileName;
@@ -56,11 +59,39 @@ public class JxlsExcelView extends AbstractExcelView {
 	@Override
 	protected void buildExcelDocument(Map<String, Object> map, HSSFWorkbook workbook, HttpServletRequest request,
 			HttpServletResponse response) throws Exception {
+		if (map == null)
+			map = new HashMap<String, Object>();
+		map.put("export", new Export());
 		XLSTransformer transformer = new XLSTransformer();
 		transformer.transformWorkbook(workbook, map);
-		response.setContentType("application/vnd.ms-excel");
-		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8")
-				+ EXTENSION);
+		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8") + EXTENSION);
+	}
+
+	public class Export {
+
+		private String date;
+		private String user;
+
+		public String getDate() {
+			return date;
+		}
+
+		public void setDate(String date) {
+			this.date = date;
+		}
+
+		public String getUser() {
+			return user;
+		}
+
+		public void setUser(String user) {
+			this.user = user;
+		}
+
+		public Export() {
+			this.user = SystemSession.getUser().getUserName();
+			this.date = DateFormatUtils.DATETIME_FORMAT.format(new Date());
+		}
 	}
 
 }

BIN
src/main/resources/jxls-tpl/ErpLog.xls


BIN
src/main/resources/jxls-tpl/account/log/ErpLog$List.xls


+ 0 - 0
src/main/resources/jxls-tpl/UsageLog.xls → src/main/resources/jxls-tpl/account/log/UsageLog$List.xls


+ 176 - 0
src/main/resources/xml-tpl/account/log/ErpLog.xml

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Excel.Sheet"?>
+<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
+	xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"
+	xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40"
+	xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882">
+	<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
+		<WindowWidth>17280</WindowWidth>
+		<WindowHeight>7524</WindowHeight>
+		<ProtectStructure>False</ProtectStructure>
+		<ProtectWindows>False</ProtectWindows>
+	</ExcelWorkbook>
+	<Styles>
+		<Style ss:ID="s1" ss:Name="千位分隔">
+			<NumberFormat
+				ss:Format="_ * #,##0.00_ ;_ * \-#,##0.00_ ;_ * &quot;-&quot;??_ ;_ @_ " />
+		</Style>
+		<Style ss:ID="Default" ss:Name="Normal">
+			<Alignment />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" />
+			<Interior />
+			<NumberFormat />
+			<Protection />
+		</Style>
+		<Style ss:ID="s5" ss:Name="货币[0]">
+			<NumberFormat
+				ss:Format="_ &quot;¥&quot;* #,##0_ ;_ &quot;¥&quot;* \-#,##0_ ;_ &quot;¥&quot;* &quot;-&quot;_ ;_ @_ " />
+		</Style>
+		<Style ss:ID="s4" ss:Name="百分比">
+			<NumberFormat ss:Format="0%" />
+		</Style>
+		<Style ss:ID="s3" ss:Name="千位分隔[0]">
+			<NumberFormat ss:Format="_ * #,##0_ ;_ * \-#,##0_ ;_ * &quot;-&quot;_ ;_ @_ " />
+		</Style>
+		<Style ss:ID="s2" ss:Name="货币">
+			<NumberFormat
+				ss:Format="_ &quot;¥&quot;* #,##0.00_ ;_ &quot;¥&quot;* \-#,##0.00_ ;_ &quot;¥&quot;* &quot;-&quot;??_ ;_ @_ " />
+		</Style>
+		<Style ss:ID="s6" />
+		<Style ss:ID="s7">
+			<Alignment ss:Horizontal="Center" />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" ss:Bold="1" />
+		</Style>
+		<Style ss:ID="s8">
+			<Alignment ss:Horizontal="Center" />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" />
+		</Style>
+		<Style ss:ID="s9">
+			<Alignment ss:Horizontal="Center" />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" ss:Bold="1" />
+			<Interior ss:Color="#99CCFF" ss:Pattern="Solid" />
+		</Style>
+		<Style ss:ID="s10">
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" ss:Bold="1" />
+			<Interior ss:Color="#99CCFF" ss:Pattern="Solid" />
+		</Style>
+		<Style ss:ID="s11">
+			<Alignment ss:Horizontal="Center" />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" />
+		</Style>
+		<Style ss:ID="s12">
+			<Alignment ss:Horizontal="Center" />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" />
+		</Style>
+		<Style ss:ID="s13">
+			<Alignment ss:Horizontal="Center" />
+			<Borders />
+			<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12" ss:Bold="1" />
+		</Style>
+	</Styles>
+	<Worksheet ss:Name="Sheet1">
+		<Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="7"
+			x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="54"
+			ss:DefaultRowHeight="15.6">
+			<Column ss:Index="1" ss:StyleID="s6" ss:AutoFitWidth="0"
+				ss:Width="119.25" />
+			<Column ss:Index="2" ss:StyleID="s6" ss:AutoFitWidth="0"
+				ss:Width="93" />
+			<Column ss:Index="4" ss:StyleID="s6" ss:AutoFitWidth="0"
+				ss:Width="102.75" />
+			<Column ss:StyleID="s6" ss:AutoFitWidth="0" ss:Width="324.75" />
+			<Column ss:StyleID="s6" ss:AutoFitWidth="0" ss:Width="42" />
+			<Row>
+				<Cell ss:StyleID="s13" ss:MergeAcross="5" ss:MergeDown="1">
+					<Data ss:Type="String">优软商务平台与UAS系统间数据传输日志</Data>
+				</Cell>
+			</Row>
+			<Row />
+			<Row>
+				<Cell ss:StyleID="s11" ss:MergeAcross="1">
+					<Data ss:Type="String">导出时间:${export.date}</Data>
+				</Cell>
+				<Cell ss:StyleID="s12" ss:MergeAcross="1">
+					<Data ss:Type="String">导出人员:${export.user}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">数据合计:条</Data>
+				</Cell>
+			</Row>
+			<Row>
+				<Cell ss:StyleID="s9">
+					<Data ss:Type="String">时间</Data>
+				</Cell>
+				<Cell ss:StyleID="s9">
+					<Data ss:Type="String">客户端IP</Data>
+				</Cell>
+				<Cell ss:StyleID="s10">
+					<Data ss:Type="String">操作人员</Data>
+				</Cell>
+				<Cell ss:StyleID="s9">
+					<Data ss:Type="String">请求资源</Data>
+				</Cell>
+				<Cell ss:StyleID="s9">
+					<Data ss:Type="String">请求动作</Data>
+				</Cell>
+				<Cell ss:StyleID="s10">
+					<Data ss:Type="String">数据包</Data>
+				</Cell>
+			</Row>
+			<!-- grid row -->
+			<Row>
+				<Cell>
+					<Data ss:Type="String">${item.timeString}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">${item.ip}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">${item.user.userName}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">${item.title}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">${item.message}</Data>
+				</Cell>
+				<Cell>
+					<Data ss:Type="String">${item.total}</Data>
+				</Cell>
+			</Row>
+		</Table>
+		<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
+			<PageSetup>
+				<Header x:Margin="0.511111111111111" />
+				<Footer x:Margin="0.511111111111111" />
+			</PageSetup>
+			<Selected />
+			<TopRowVisible>0</TopRowVisible>
+			<LeftColumnVisible>0</LeftColumnVisible>
+			<PageBreakZoom>100</PageBreakZoom>
+			<FreezePanes />
+			<FrozenNoSplit />
+			<SplitHorizontal>4</SplitHorizontal>
+			<TopRowBottomPane>4</TopRowBottomPane>
+			<ActivePane>2</ActivePane>
+			<Panes>
+				<Pane>
+					<Number>3</Number>
+				</Pane>
+				<Pane>
+					<Number>2</Number>
+					<ActiveRow>9</ActiveRow>
+					<ActiveCol>0</ActiveCol>
+					<RangeSelection>R10C1</RangeSelection>
+				</Pane>
+			</Panes>
+			<ProtectObjects>False</ProtectObjects>
+			<ProtectScenarios>False</ProtectScenarios>
+		</WorksheetOptions>
+	</Worksheet>
+</Workbook>

+ 6 - 0
src/main/webapp/WEB-INF/web.xml

@@ -30,6 +30,7 @@
 	<filter>
 		<filter-name>CharacterEncodingFilter</filter-name>
 		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
+		<async-supported>true</async-supported>
 		<init-param>
 			<param-name>encoding</param-name>
 			<param-value>UTF-8</param-value>
@@ -43,6 +44,7 @@
 	<filter>
 		<filter-name>HttpMethodFilter</filter-name>
 		<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
+		<async-supported>true</async-supported>
 	</filter>
 	<filter-mapping>
 		<filter-name>CharacterEncodingFilter</filter-name>
@@ -69,6 +71,7 @@
 			<param-value>WEB-INF/spring/webmvc.xml</param-value>
 		</init-param>
 		<load-on-startup>1</load-on-startup>
+		<async-supported>true</async-supported>
 	</servlet>
 
 	<servlet-mapping>
@@ -79,6 +82,7 @@
 	<filter>
 		<filter-name>localizationFilter</filter-name>
 		<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
+		<async-supported>true</async-supported>
 	</filter>
 
 	<filter-mapping>
@@ -89,6 +93,7 @@
 	<filter>
 		<filter-name>springSecurityFilterChain</filter-name>
 		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
+		<async-supported>true</async-supported>
 	</filter>
 
 	<filter-mapping>
@@ -99,6 +104,7 @@
 	<filter>
 		<filter-name>deviceResolverRequestFilter</filter-name>
 		<filter-class>org.springframework.mobile.device.DeviceResolverRequestFilter</filter-class>
+		<async-supported>true</async-supported>
 	</filter>
 
 	<filter-mapping>