提交 30f62402 编写于 作者: Skyeye云's avatar Skyeye云

代码编辑器生成历史,下载,同步文件完成

上级 a63b774b
package com.skyeye.codemodel.dao;
import java.util.List;
import java.util.Map;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
public interface CodeModelHistoryDao {
public List<Map<String, Object>> queryCodeModelHistoryList(Map<String, Object> map, PageBounds pageBounds) throws Exception;
public List<Map<String, Object>> queryCodeModelHistoryListByFilePath(Map<String, Object> map) throws Exception;
}
package com.skyeye.codemodel.service;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
public interface CodeModelHistoryService {
public void queryCodeModelHistoryList(InputObject inputObject, OutputObject outputObject) throws Exception;
public void insertCodeModelHistoryCreate(InputObject inputObject, OutputObject outputObject) throws Exception;
public void downloadCodeModelHistory(InputObject inputObject, OutputObject outputObject) throws Exception;
}
package com.skyeye.codemodel.service.impl;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.github.miemiedev.mybatis.paginator.domain.PageBounds;
import com.github.miemiedev.mybatis.paginator.domain.PageList;
import com.skyeye.codemodel.dao.CodeModelHistoryDao;
import com.skyeye.codemodel.service.CodeModelHistoryService;
import com.skyeye.common.constans.Constants;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
@Service
public class CodeModelHistoryServiceImpl implements CodeModelHistoryService{
@Autowired
private CodeModelHistoryDao codeModelHistoryDao;
/**
*
* @Title: queryCodeModelHistoryList
* @Description: 获取模板生成历史列表
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@SuppressWarnings("static-access")
@Override
public void queryCodeModelHistoryList(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
List<Map<String, Object>> beans = codeModelHistoryDao.queryCodeModelHistoryList(map,
new PageBounds(Integer.parseInt(map.get("page").toString()), Integer.parseInt(map.get("limit").toString())));
PageList<Map<String, Object>> beansPageList = (PageList<Map<String, Object>>)beans;
int total = beansPageList.getPaginator().getTotalCount();
File file = null;
String tPath = inputObject.getRequest().getSession().getServletContext().getRealPath("/");
String basePath = tPath.substring(0, inputObject.getRequest().getSession().getServletContext().getRealPath("/").indexOf(Constants.PROJECT_WEB));
for(Map<String, Object> bean : beans){
file = new File(basePath + "/" + bean.get("filePath").toString());
if(!file.exists()){
bean.put("isExist", "否");
}else{
bean.put("isExist", "是");
}
}
outputObject.setBeans(beans);
outputObject.settotal(total);
}
/**
*
* @Title: insertCodeModelHistoryCreate
* @Description: 重新生成文件
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@SuppressWarnings("static-access")
@Override
public void insertCodeModelHistoryCreate(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
String tPath = inputObject.getRequest().getSession().getServletContext().getRealPath("/");
String basePath = tPath.substring(0, inputObject.getRequest().getSession().getServletContext().getRealPath("/").indexOf(Constants.PROJECT_WEB));
String strZipPath = basePath + "/" + map.get("filePath").toString();
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(strZipPath));
byte[] buffer = new byte[1024];
List<Map<String, Object>> beans = codeModelHistoryDao.queryCodeModelHistoryListByFilePath(map);
for(Map<String, Object> bean : beans){
//加入压缩包
ByteArrayInputStream stream = new ByteArrayInputStream(bean.get("content").toString().getBytes());
out.putNextEntry(new ZipEntry(bean.get("fileName").toString() + "." + bean.get("fileType").toString().toLowerCase()));
int len;
// 读入需要下载的文件的内容,打包到zip文件
while ((len = stream.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
out.closeEntry();
}
out.close();
}
/**
*
* @Title: downloadCodeModelHistory
* @Description: 下载文件
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@SuppressWarnings({ "static-access", "resource" })
@Override
public void downloadCodeModelHistory(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> map = inputObject.getParams();
String tPath = inputObject.getRequest().getSession().getServletContext().getRealPath("/");
String basePath = tPath.substring(0, inputObject.getRequest().getSession().getServletContext().getRealPath("/").indexOf(Constants.PROJECT_WEB));
String strZipPath = basePath + "/" + map.get("filePath").toString();
//获取输入流
InputStream bis = new BufferedInputStream(new FileInputStream(new File(strZipPath)));
inputObject.getResponse().setHeader("REQUESTMATION", "DOWNLOAD");
// 转码,免得文件名中文乱码
String filename = URLEncoder.encode(map.get("filePath").toString(), "UTF-8");
// 设置文件下载头
inputObject.getResponse().addHeader("Content-Disposition", "attachment;filename=" + filename);
// 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
inputObject.getResponse().setContentType("multipart/form-data");
BufferedOutputStream out1 = new BufferedOutputStream(inputObject.getResponse().getOutputStream());
int len = 0;
while ((len = bis.read()) != -1) {
out1.write(len);
out1.flush();
}
}
}
package com.skyeye.common.service.impl;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
......@@ -15,23 +10,18 @@ import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import com.skyeye.common.constans.Constants;
import com.skyeye.common.dao.CommonDao;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.common.service.CommonService;
import com.skyeye.common.util.ToolUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
......@@ -246,23 +236,6 @@ public class CommonServiceImpl implements CommonService{
}
out.close();
commonDao.insertCodeModelHistory(inBeans);
// //下载
// //获取输入流
// InputStream bis = new BufferedInputStream(new FileInputStream(new File(strZipPath)));
// inputObject.getResponse().setHeader("REQUESTMATION", "DOWNLOAD");
// // 转码,免得文件名中文乱码
// String filename = URLEncoder.encode(zipName, "UTF-8");
// // 设置文件下载头
// inputObject.getResponse().addHeader("Content-Disposition", "attachment;filename=" + filename);
// // 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型
// inputObject.getResponse().setContentType("multipart/form-data");
// BufferedOutputStream out1 = new BufferedOutputStream(inputObject.getResponse().getOutputStream());
// int len = 0;
// while ((len = bis.read()) != -1) {
// out1.write(len);
// out1.flush();
// }
}
}
package com.skyeye.codemodel.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.skyeye.codemodel.service.CodeModelHistoryService;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
@Controller
public class CodeModelHistoryController {
@Autowired
private CodeModelHistoryService codeModelHistoryService;
/**
*
* @Title: queryCodeModelHistoryList
* @Description: 获取模板生成历史列表
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping("/post/CodeModelHistoryController/queryCodeModelHistoryList")
@ResponseBody
public void queryCodeModelHistoryList(InputObject inputObject, OutputObject outputObject) throws Exception{
codeModelHistoryService.queryCodeModelHistoryList(inputObject, outputObject);
}
/**
*
* @Title: insertCodeModelHistoryCreate
* @Description: 重新生成文件
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping("/post/CodeModelHistoryController/insertCodeModelHistoryCreate")
@ResponseBody
public void insertCodeModelHistoryCreate(InputObject inputObject, OutputObject outputObject) throws Exception{
codeModelHistoryService.insertCodeModelHistoryCreate(inputObject, outputObject);
}
/**
*
* @Title: downloadCodeModelHistory
* @Description: 下载文件
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping("/post/CodeModelHistoryController/downloadCodeModelHistory")
@ResponseBody
public void downloadCodeModelHistory(InputObject inputObject, OutputObject outputObject) throws Exception{
codeModelHistoryService.downloadCodeModelHistory(inputObject, outputObject);
}
}
<?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.skyeye.codemodel.dao.CodeModelHistoryDao">
<select id="queryCodeModelHistoryList" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.table_name tableName,
a.file_path filePath,
CONVERT(a.create_time, char) createTime
FROM
code_model_history a
WHERE a.group_id = #{groupId}
GROUP BY a.file_path
ORDER BY a.create_time DESC
</select>
<select id="queryCodeModelHistoryListByFilePath" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
a.file_name fileName,
a.file_type fileType,
a.content
FROM
code_model_history a
WHERE a.file_path = #{filePath}
</select>
</mapper>
\ No newline at end of file
......@@ -343,6 +343,17 @@
<url id="codemodel014" path="/post/CommonController/downloadFileByJsonData" val="代码生成器生成下载文件" allUse="1">
<property id="jsonData" name="jsonData" ref="required" var="json数据"/>
</url>
<url id="codemodel015" path="/post/CodeModelHistoryController/queryCodeModelHistoryList" val="获取模板生成历史列表" allUse="1">
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
<property id="groupId" name="groupId" ref="required" var="分组id"/>
</url>
<url id="codemodel016" path="/post/CodeModelHistoryController/insertCodeModelHistoryCreate" val="重新生成文件" allUse="1">
<property id="filePath" name="filePath" ref="required" var="文件路径名"/>
</url>
<url id="codemodel017" path="/post/CodeModelHistoryController/downloadCodeModelHistory" val="下载文件" allUse="0">
<property id="filePath" name="filePath" ref="required" var="文件路径名"/>
</url>
<!-- 代码生成器系列结束 -->
</controller>
\ No newline at end of file
......@@ -1104,7 +1104,6 @@ function js_beautify(js_source_text, indent_size, indent_character, indent_level
}
......@@ -139,7 +139,7 @@ layui.config({
});
function loadTable(){
table.reload("messageTable", {where:{groupName:$("#groupName").val(), groupNum:$("#groupNum").val()}});
table.reload("messageTable", {where:{groupId:groupId}});
}
exports('codemodellist', {});
......
......@@ -31,7 +31,7 @@ layui.config({
{ field: 'modelNum', title: '模板数量', width: 120 },
{ field: 'useNum', title: '调用次数', width: 120 },
{ field: 'createTime', title: '创建时间', width: 180 },
{ title: '操作', fixed: 'right', align: 'center', width: 240, toolbar: '#tableBar'}
{ title: '操作', fixed: 'right', align: 'center', width: 280, toolbar: '#tableBar'}
]]
});
......@@ -55,6 +55,8 @@ layui.config({
area: ['800px', '500px'],
content: data.groupDesc,
});
}else if (layEvent === 'createHistory') {//生成历史
createHistory(data);
}
});
......@@ -113,6 +115,17 @@ layui.config({
});
}
//生成历史
function createHistory(data){
rowId = data.id;
_openNewWindows({
url: "../../tpl/codemodelhistory/codemodelhistorylist.html",
title: "生成历史",
maxmin: true,
pageId: "codemodelhistorylist",
});
}
//使用模板
function useModelGroup(data){
rowId = data.id;
......
var filePath = "";
layui.config({
base: basePath,
version: skyeyeVersion
}).define(['table', 'jquery', 'winui', 'form'], function (exports) {
winui.renderColor();
//模板分组ID
groupId = parent.rowId;
var $ = layui.$,
form = layui.form,
table = layui.table;
//表格渲染
table.render({
id: 'messageTable',
elem: '#messageTable',
method: 'post',
url: reqBasePath + 'codemodel015',
where:{groupId:groupId},
even:true, //隔行变色
page: true,
limits: [8, 16, 24, 32, 40, 48, 56],
limit: 8,
cols: [[
{ title: '序号', type: 'numbers'},
{ field: 'tableName', title: '表名', width: 180 },
{ field: 'filePath', title: '文件名', width: 300 },
{ field: 'isExist', title: '是否可下载', width: 120 },
{ field: 'createTime', title: '创建时间', width: 180 },
{ title: '操作', fixed: 'right', align: 'center', width: 240, toolbar: '#tableBar'}
]]
});
table.on('tool(messageTable)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'download') { //下载
download(data, obj);
}else if(layEvent === 'creatFile') { //同步文件
creatFile(data, obj);
}
});
//下载
function download(data){
filePath = data.filePath;
window.open(reqBasePath + "codemodel017?filePath=" + filePath);
}
//同步文件
function creatFile(data){
filePath = data.filePath;
AjaxPostUtil.request({url:reqBasePath + "codemodel016", params:{filePath:filePath}, type:'json', callback:function(json){
if(json.returnCode == 0){
top.winui.window.msg('生成完成,请下载。', {icon: 1,time: 2000});
loadTable();
}else{
top.winui.window.msg(json.returnMessage, {icon: 2,time: 2000});
}
}});
}
//搜索表单
form.render();
form.on('submit(formSearch)', function (data) {
//表单验证
if (winui.verifyForm(data.elem)) {
loadTable();
}
return false;
});
//刷新数据
$("body").on("click", "#reloadTable", function(){
loadTable();
});
function loadTable(){
table.reload("messageTable", {where:{groupId:groupId}});
}
exports('codemodelhistorylist.js', {});
});
......@@ -47,6 +47,7 @@
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="useModelGroup">代码生成</a>
{{# } }}
<a class="layui-btn layui-btn-xs" lay-event="modelConcle">模板管理</a>
<a class="layui-btn layui-btn-xs" lay-event="createHistory">生成历史</a>
</script>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
......
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
<link href="../../assets/lib/layui/css/codemirror.css" rel="stylesheet" />
</head>
<body>
<div class="winui-toolbar">
<div class="winui-tool">
<button id="reloadTable" class="winui-toolbtn"><i class="fa fa-refresh" aria-hidden="true"></i>刷新数据</button>
</div>
</div>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
<script type="text/html" id="tableBar">
{{# if(d.isExist == ''){ }}
<a class="layui-btn layui-btn-xs" lay-event="download">下载</a>
{{# }else{ }}
<a class="layui-btn layui-btn-xs" lay-event="creatFile">同步文件</a>
{{# } }}
</script>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/codemodelhistory/'}).use('codemodelhistorylist');
</script>
</body>
</html>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册