Compare commits

...

7 Commits

Author SHA1 Message Date
thinkgem
1ee1722be5 update version 2023-07-07 09:53:59 +08:00
thinkgem
ffad5e5e18 升级依赖库... 2023-07-06 18:06:21 +08:00
thinkgem
768d8a1c47 update 2023-07-06 18:04:59 +08:00
thinkgem
45fde1ef66 poi 5.2 2023-07-06 17:44:16 +08:00
thinkgem
414bad08d5 fastjson2 2023-07-06 17:41:43 +08:00
thinkgem
09ff1c68b0 #I77JUW 2023-05-29 18:26:13 +08:00
thinkgem
6529dd10b2 add maven build time 2023-04-13 11:16:29 +08:00
15 changed files with 50 additions and 613 deletions

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>
@@ -194,11 +194,6 @@
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>

View File

@@ -4,11 +4,8 @@
*/
package com.jeesite.common.io;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import com.alibaba.fastjson.parser.ParserConfig;
import com.jeesite.common.lang.StringUtils;
import org.springframework.boot.env.OriginTrackedMapPropertySource;
import org.springframework.boot.env.PropertiesPropertySourceLoader;
import org.springframework.boot.env.YamlPropertySourceLoader;
@@ -16,8 +13,10 @@ import org.springframework.core.Ordered;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.Resource;
import com.alibaba.fastjson.parser.ParserConfig;
import com.jeesite.common.lang.StringUtils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* 配置文件加载Boot
@@ -40,7 +39,11 @@ public class PropertyLoader implements org.springframework.boot.env.PropertySour
List<PropertySource<?>> propertySources = new ArrayList<>();
if (!isLoadJeeSitePropertySource) {
isLoadJeeSitePropertySource = true;
ParserConfig.getGlobalInstance().setSafeMode(true); // 开启 FastJSON 安全模式
try {
ParserConfig.getGlobalInstance().setSafeMode(true); // 开启 FastJSON 安全模式
} catch (Exception ignored) {
// 兼容 fastjson2 的调用,不返回异常
}
Properties properties = PropertiesUtils.getInstance().getProperties();
propertySources.add(new OriginTrackedMapPropertySource("jeesite", properties));
} else {

View File

@@ -1,235 +0,0 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law.
*/
package com.jeesite.common.utils.excel;
import java.io.InputStream;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.eventusermodel.XSSFReader;
import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
/**
* Excel超大数据读取抽象Excel2007读取器excel2007的底层数据结构是xml文件采用SAX的事件驱动的方法解析
* xml需要继承DefaultHandler在遇到文件内容时事件会触发这种做法可以大大降低 内存的耗费,特别使用于大数据量的文件。
* @version 2014-9-2
*/
public abstract class ExcelReader extends DefaultHandler {
// 共享字符串表
private SharedStringsTable sst;
// 上一次的内容
private String lastContents;
private boolean nextIsString;
private int sheetIndex = -1;
private List<String> rowList = new ArrayList<String>();
// 当前行
private int curRow = 0;
// 当前列
private int curCol = 0;
// 日期标志
private boolean dateFlag;
// 数字标志
private boolean numberFlag;
private boolean isTElement;
/**
* 遍历工作簿中所有的电子表格
* @param filename
* @throws Exception
*/
public void process(String filename) throws Exception {
OPCPackage pkg = OPCPackage.open(filename);
XSSFReader r = new XSSFReader(pkg);
SharedStringsTable sst = r.getSharedStringsTable();
XMLReader parser = fetchSheetParser(sst);
Iterator<InputStream> sheets = r.getSheetsData();
while (sheets.hasNext()) {
curRow = 0;
sheetIndex++;
InputStream sheet = sheets.next();
InputSource sheetSource = new InputSource(sheet);
parser.parse(sheetSource);
sheet.close();
}
}
/**
* 只遍历一个电子表格其中sheetId为要遍历的sheet索引从1开始1-3
* @param filename
* @param sheetId
* @throws Exception
*/
public void process(String filename, int sheetId) throws Exception {
OPCPackage pkg = OPCPackage.open(filename);
XSSFReader r = new XSSFReader(pkg);
SharedStringsTable sst = r.getSharedStringsTable();
XMLReader parser = fetchSheetParser(sst);
// 根据 rId# 或 rSheet# 查找sheet
InputStream sheet2 = r.getSheet("rId" + sheetId);
sheetIndex++;
InputSource sheetSource = new InputSource(sheet2);
parser.parse(sheetSource);
sheet2.close();
}
public XMLReader fetchSheetParser(SharedStringsTable sst)
throws SAXException {
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
this.sst = sst;
parser.setContentHandler(this);
return parser;
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
// System.out.println("startElement: " + localName + ", " + name + ", " + attributes);
// c => 单元格
if ("c".equals(name)) {
// 如果下一个元素是 SST 的索引则将nextIsString标记为true
String cellType = attributes.getValue("t");
if ("s".equals(cellType)) {
nextIsString = true;
} else {
nextIsString = false;
}
// 日期格式
String cellDateType = attributes.getValue("s");
if ("1".equals(cellDateType)) {
dateFlag = true;
} else {
dateFlag = false;
}
String cellNumberType = attributes.getValue("s");
if ("2".equals(cellNumberType)) {
numberFlag = true;
} else {
numberFlag = false;
}
}
// 当元素为t时
if ("t".equals(name)) {
isTElement = true;
} else {
isTElement = false;
}
// 置空
lastContents = "";
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
// System.out.println("endElement: " + localName + ", " + name);
// 根据SST的索引值的到单元格的真正要存储的字符串
// 这时characters()方法可能会被调用多次
if (nextIsString) {
try {
int idx = Integer.parseInt(lastContents);
lastContents = new XSSFRichTextString(sst.getEntryAt(idx))
.toString();
} catch (Exception e) {
}
}
// t元素也包含字符串
if (isTElement) {
String value = lastContents.trim();
rowList.add(curCol, value);
curCol++;
isTElement = false;
// v => 单元格的值如果单元格是字符串则v标签的值为该字符串在SST中的索引
// 将单元格内容加入rowlist中在这之前先去掉字符串前后的空白符
} else if ("v".equals(name)) {
String value = lastContents.trim();
value = "".equals(value) ? " " : value;
try {
// 日期格式处理
if (dateFlag) {
Date date = HSSFDateUtil.getJavaDate(Double.valueOf(value));
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
value = dateFormat.format(date);
}
// 数字类型处理
if (numberFlag) {
BigDecimal bd = new BigDecimal(value);
value = bd.setScale(3, BigDecimal.ROUND_UP).toString();
}
} catch (Exception e) {
// 转换失败仍用读出来的值
}
rowList.add(curCol, value);
curCol++;
} else {
// 如果标签名称为 row ,这说明已到行尾,调用 optRows() 方法
if ("row".equals(name)) {
getRows(sheetIndex + 1, curRow, rowList);
rowList.clear();
curRow++;
curCol = 0;
}
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// 得到单元格内容的值
lastContents += new String(ch, start, length);
}
/**
* 获取行数据回调
* @param sheetIndex
* @param curRow
* @param rowList
*/
public abstract void getRows(int sheetIndex, int curRow, List<String> rowList);
// /**
// * 测试方法
// */
// public static void main(String[] args) throws Exception {
//
// String file = "E:/销售数据导入.xlsx";
//
// ExcelReader reader = new ExcelReader() {
// @Override
// public void getRows(int sheetIndex, int curRow, List<String> rowList) {
//
// System.out.println("Sheet:" + sheetIndex + ", Row:" + curRow + ", Data:" +rowList);
//
// }
// };
// reader.process(file, 1);
//
// }
}

View File

@@ -1,343 +0,0 @@
/**
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
* No deletion without permission, or be held responsible to law.
*/
package com.jeesite.common.utils.excel;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.util.Calendar;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
/**
* Excel超大数据写入抽象excel2007读入器先构建.xlsx一张模板改写模板中的sheet.xml,
* 使用这种方法 写入.xlsx文件不需要太大的内存
* @version 2014-9-2
*/
public abstract class ExcelWriter {
private SpreadsheetWriter sw;
/**
* 写入电子表格的主要流程
*
* @param fileName
* @throws Exception
*/
@SuppressWarnings("resource")
public void process(String fileName) throws Exception {
// 建立工作簿和电子表格对象
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("sheet1");
// 持有电子表格数据的xml文件名 例如 /xl/worksheets/sheet1.xml
String sheetRef = sheet.getPackagePart().getPartName().getName();
// 保存模板
FileOutputStream os = new FileOutputStream("template.xlsx");
wb.write(os);
os.close();
// 生成xml文件
File tmp = File.createTempFile("sheet", ".xml");
Writer fw = new FileWriter(tmp);
sw = new SpreadsheetWriter(fw);
generate();
fw.close();
// 使用产生的数据替换模板
File templateFile = new File("template.xlsx");
FileOutputStream out = new FileOutputStream(fileName);
substitute(templateFile, tmp, sheetRef.substring(1), out);
out.close();
// 删除文件之前调用一下垃圾回收器,否则无法删除模板文件
System.gc();
// 删除临时模板文件
if (templateFile.isFile() && templateFile.exists()) {
templateFile.delete();
}
}
/**
* 类使用者应该使用此方法进行写操作
*
* @throws Exception
*/
public abstract void generate() throws Exception;
public void beginSheet() throws IOException {
sw.beginSheet();
}
public void insertRow(int rowNum) throws IOException {
sw.insertRow(rowNum);
}
public void createCell(int columnIndex, String value) throws IOException {
sw.createCell(columnIndex, value, -1);
}
public void createCell(int columnIndex, double value) throws IOException {
sw.createCell(columnIndex, value, -1);
}
public void endRow() throws IOException {
sw.endRow();
}
public void endSheet() throws IOException {
sw.endSheet();
}
/**
*
* @param zipfile the template file
* @param tmpfile the XML file with the sheet data
* @param entry the name of the sheet entry to substitute, e.g. xl/worksheets/sheet1.xml
* @param out the stream to write the result to
*/
private static void substitute(File zipfile, File tmpfile, String entry,
OutputStream out) throws IOException {
ZipFile zip = null;
ZipOutputStream zos = null;
InputStream is = null;
try{
zip = new ZipFile(zipfile);
zos = new ZipOutputStream(out);
@SuppressWarnings("unchecked")
Enumeration<ZipEntry> en = (Enumeration<ZipEntry>) zip.entries();
while (en.hasMoreElements()) {
ZipEntry ze = en.nextElement();
if (!ze.getName().equals(entry)) {
zos.putNextEntry(new ZipEntry(ze.getName()));
InputStream is2 = null;
try{
is2 = zip.getInputStream(ze);
copyStream(is2, zos);
}finally {
if (is2 != null){
is2.close();
}
}
}
}
zos.putNextEntry(new ZipEntry(entry));
is = new FileInputStream(tmpfile);
copyStream(is, zos);
}finally {
if (is != null){
is.close();
}
if (zos != null){
zos.close();
}
if (zip != null){
zip.close();
}
}
}
private static void copyStream(InputStream in, OutputStream out)
throws IOException {
byte[] chunk = new byte[1024];
int count;
while ((count = in.read(chunk)) >= 0) {
out.write(chunk, 0, count);
}
}
/**
* 在写入器中写入电子表格
*
*/
public static class SpreadsheetWriter {
private final Writer _out;
private int _rownum;
private static String LINE_SEPARATOR = System
.getProperty("line.separator");
public SpreadsheetWriter(Writer out) {
_out = out;
}
public void beginSheet() throws IOException {
_out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">");
_out.write("<sheetData>" + LINE_SEPARATOR);
}
public void endSheet() throws IOException {
_out.write("</sheetData>");
_out.write("</worksheet>");
}
/**
* 插入新行
*
* @param rownum
* 以0开始
*/
public void insertRow(int rownum) throws IOException {
_out.write("<row r=\"" + (rownum + 1) + "\">" + LINE_SEPARATOR);
this._rownum = rownum;
}
/**
* 插入行结束标志
*/
public void endRow() throws IOException {
_out.write("</row>" + LINE_SEPARATOR);
}
/**
* 插入新列
*
* @param columnIndex
* @param value
* @param styleIndex
* @throws IOException
*/
public void createCell(int columnIndex, String value, int styleIndex)
throws IOException {
String ref = new CellReference(_rownum, columnIndex)
.formatAsString();
_out.write("<c r=\"" + ref + "\" t=\"inlineStr\"");
if (styleIndex != -1) {
_out.write(" s=\"" + styleIndex + "\"");
}
_out.write(">");
_out.write("<is><t>" + encoderXML(value) + "</t></is>");
_out.write("</c>");
}
public void createCell(int columnIndex, String value)
throws IOException {
createCell(columnIndex, value, -1);
}
public void createCell(int columnIndex, double value, int styleIndex)
throws IOException {
String ref = new CellReference(_rownum, columnIndex)
.formatAsString();
_out.write("<c r=\"" + ref + "\" t=\"n\"");
if (styleIndex != -1) {
_out.write(" s=\"" + styleIndex + "\"");
}
_out.write(">");
_out.write("<v>" + value + "</v>");
_out.write("</c>");
}
public void createCell(int columnIndex, double value)
throws IOException {
createCell(columnIndex, value, -1);
}
public void createCell(int columnIndex, Calendar value, int styleIndex)
throws IOException {
createCell(columnIndex, DateUtil.getExcelDate(value, false),
styleIndex);
}
}
// XML Encode
private static final String[] xmlCode = new String[256];
static {
// Special characters
xmlCode['\''] = "'";
xmlCode['\"'] = "\""; // double quote
xmlCode['&'] = "&"; // ampersand
xmlCode['<'] = "<"; // lower than
xmlCode['>'] = ">"; // greater than
}
/**
* <p>
* Encode the given text into xml.
* </p>
*
* @param string the text to encode
* @return the encoded string
*/
public static String encoderXML(String string) {
if (string == null) {
return "";
}
int n = string.length();
char character;
String xmlchar;
StringBuffer buffer = new StringBuffer();
// loop over all the characters of the String.
for (int i = 0; i < n; i++) {
character = string.charAt(i);
// the xmlcode of these characters are added to a StringBuffer
// one by one
try {
xmlchar = xmlCode[character];
if (xmlchar == null) {
buffer.append(character);
} else {
buffer.append(xmlCode[character]);
}
} catch (ArrayIndexOutOfBoundsException aioobe) {
buffer.append(character);
}
}
return buffer.toString();
}
// /**
// * 测试方法
// */
// public static void main(String[] args) throws Exception {
//
// String file = "E:/测试导出数据.xlsx";
//
// ExcelWriter writer = new ExcelWriter() {
// @Override
// public void generate() throws Exception {
//
// // 电子表格开始
// this.beginSheet();
//
// for (int rownum = 0; rownum < 100; rownum++) {
// // 插入新行
// this.insertRow(rownum);
//
// // 建立新单元格,索引值从0开始,表示第一列
// this.createCell(0, "第 " + rownum + " 行");
// this.createCell(1, 34343.123456789);
// this.createCell(2, "23.67%");
// this.createCell(3, "12:12:23");
// this.createCell(4, "2014-10-11 12:12:23");
// this.createCell(5, "true");
// this.createCell(6, "false");
//
// // 结束行
// this.endRow();
// }
//
// // 电子表格结束
// this.endSheet();
// }
// };
// writer.process(file);
// }
}

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -16,4 +16,5 @@
4.5.0
4.6.0
4.6.1
4.6.2
4.6.2
4.7.0

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<relativePath>../../parent/pom.xml</relativePath>
</parent>

View File

@@ -72,6 +72,13 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
*/
@Override
public void addDataScopeFilter(EmpUser empUser, String ctrlPermi) {
// String defaultRoleCodes = Global.getConfig(
// "sys.user.defaultRoleCodes." + empUser.getCurrentUser().getUserType());
// if (StringUtils.isNotBlank(defaultRoleCodes)) {
// empUser.getCurrentUser().getRoleList().addAll(Arrays
// .stream(StringUtils.split(defaultRoleCodes,','))
// .map(roleCode -> RoleUtils.get(roleCode)).collect(Collectors.toList()));
// }
empUser.getSqlMap().getDataScope().addFilter("dsfOffice",
"Office", "e.office_code", "a.create_by", ctrlPermi, "office_user");
if (StringUtils.isNotBlank(EmpUtils.getCompany().getCompanyCode())){

View File

@@ -26,7 +26,6 @@
<ul class="content-info">
<li><i class="fa fa-user"></i> 发送者:${msgInner.sendUserName}</li>
<li><i class="fa fa-calendar"></i> 发送时间:${msgInner.sendDate, 'yyyy-MM-dd HH:mm'}</li>
<li><i class="fa icon-envelope-letter"></i> 读取时间:${msgInner.sendDate, 'yyyy-MM-dd HH:mm'}</li>
<li><i class="fa fa-bookmark-o"></i> 等级:${@DictUtils.getDictLabel('msg_inner_content_level', msgInner.contentLevel, '普通')}</li>
<li><i class="fa fa-bookmark-o"></i> 类型:${@DictUtils.getDictLabel('msg_inner_content_type', msgInner.contentType, '其它')}</li>
</ul>

View File

@@ -4,7 +4,7 @@ productName: JeeSite Demo
companyName: ThinkGem
# 产品版本、版权年份
productVersion: V4.6
productVersion: V4.7
copyrightYear: 2023
# 数据库连接

View File

@@ -6,13 +6,13 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.10</version>
<version>2.7.12</version>
<relativePath />
</parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite Parent</name>
@@ -22,30 +22,34 @@
<properties>
<!-- common version setting -->
<commons-io.version>2.11.0</commons-io.version>
<commons-io.version>2.13.0</commons-io.version>
<commons-text.version>1.10.0</commons-text.version>
<commons-beanutils.version>1.9.4</commons-beanutils.version>
<commons-email.version>1.5</commons-email.version>
<fst.version>2.57</fst.version>
<fastjson.version>1.2.83_noneautotype</fastjson.version>
<fastjson.version>2.0.33</fastjson.version>
<!-- <jackson.version>2.12.6</jackson.version> -->
<!-- <activation.version>1.1.1</activation.version> -->
<UserAgentUtils.version>1.21</UserAgentUtils.version>
<!-- <metadata-extractor.version>2.11.0</metadata-extractor.version> -->
<thumbnailator.version>0.4.17</thumbnailator.version>
<twelvemonkeys.version>3.8.2</twelvemonkeys.version>
<thumbnailator.version>0.4.19</thumbnailator.version>
<twelvemonkeys.version>3.9.3</twelvemonkeys.version>
<blade-patchca.version>1.1.2</blade-patchca.version>
<jmimemagic.version>0.1.5</jmimemagic.version>
<zxing.version>3.4.1</zxing.version>
<poi.version>4.1.2</poi.version>
<zxing.version>3.5.1</zxing.version>
<poi.version>5.2.3</poi.version>
<pinyin4j.version>2.5.1</pinyin4j.version>
<groovy.version>3.0.10</groovy.version>
<groovy.version>3.0.17</groovy.version>
<joda-time.version>2.10.4</joda-time.version>
<logstash-logback.version>7.3</logstash-logback.version>
<elasticsearch.version>7.17.8</elasticsearch.version>
<lucene.version>8.11.1</lucene.version>
<!-- framework version setting -->
<mybatis.version>3.5.11</mybatis.version>
<mybatis.version>3.5.13</mybatis.version>
<mybatis-spring.version>2.0.7</mybatis-spring.version>
<jsqlparser.version>4.5</jsqlparser.version>
<druid.version>1.2.11</druid.version>
<jsqlparser.version>4.6</jsqlparser.version>
<druid.version>1.2.18</druid.version>
<shiro.version>1.11.0</shiro.version>
<j2cache.version>2.8.0-release</j2cache.version>
<swagger.version>1.6.6</swagger.version>
@@ -130,6 +134,9 @@
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
</manifestEntries>
</archive>
</configuration>
<executions>
@@ -170,6 +177,9 @@
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
</manifest>
<addMavenDescriptor>false</addMavenDescriptor>
<manifestEntries>
<Build-Time>${maven.build.timestamp}</Build-Time>
</manifestEntries>
</archive>
</configuration>
</plugin>

View File

@@ -5,7 +5,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite</name>

View File

@@ -5,7 +5,7 @@
<groupId>com.jeesite</groupId>
<artifactId>jeesite-root</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>JeeSite Root</name>

View File

@@ -6,7 +6,7 @@
<parent>
<groupId>com.jeesite</groupId>
<artifactId>jeesite-parent</artifactId>
<version>4.6.2-SNAPSHOT</version>
<version>4.7.0-SNAPSHOT</version>
<relativePath>../parent/pom.xml</relativePath>
</parent>

View File

@@ -8,7 +8,7 @@ productName: JeeSite Demo
companyName: ThinkGem
# 产品版本、版权年份
productVersion: V4.6
productVersion: V4.7
copyrightYear: 2023
# 是否演示模式