提交 539dee42 作者: chenshiqiang

import

上级 c7b759e7
...@@ -197,6 +197,13 @@ ...@@ -197,6 +197,13 @@
<version>1.11</version> <version>1.11</version>
</dependency> </dependency>
<!-- excel工具包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.10</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest; ...@@ -26,6 +26,7 @@ import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.util.WebUtils; import org.springframework.web.util.WebUtils;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -101,6 +102,7 @@ public class KnowledgeController { ...@@ -101,6 +102,7 @@ public class KnowledgeController {
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
List<Result<KnowFile>> resultList = localFileService.upload(fileMap); List<Result<KnowFile>> resultList = localFileService.upload(fileMap);
KbAuthorizedUser userInfo = SpringContextUtils.getUserInfo(); KbAuthorizedUser userInfo = SpringContextUtils.getUserInfo();
knowledge.setImportData(0);
CompletableFuture.runAsync(()-> this.add(resultList,knowledge,userInfo)); CompletableFuture.runAsync(()-> this.add(resultList,knowledge,userInfo));
return Result.OK("添加成功!"); return Result.OK("添加成功!");
} }
...@@ -168,4 +170,14 @@ public class KnowledgeController { ...@@ -168,4 +170,14 @@ public class KnowledgeController {
} }
return Result.error("响应失败"); return Result.error("响应失败");
} }
/**
* 通过excel导入
*
* @return
*/
@RequestMapping(value = "/importInfo", method = RequestMethod.POST)
public Result<?> importInfo(HttpServletRequest request, HttpServletResponse response) {
return knowledgeService.doImportInfo(request);
}
} }
...@@ -111,6 +111,7 @@ public class Knowledge implements Serializable { ...@@ -111,6 +111,7 @@ public class Knowledge implements Serializable {
private List<Content> contents; private List<Content> contents;
private List<KnowFile> files; private List<KnowFile> files;
private Integer score; private Integer score;
private Integer importData;
} }
......
...@@ -6,6 +6,9 @@ import com.zzsn.knowbase.entity.KnowFile; ...@@ -6,6 +6,9 @@ import com.zzsn.knowbase.entity.KnowFile;
import com.zzsn.knowbase.entity.Knowledge; import com.zzsn.knowbase.entity.Knowledge;
import com.zzsn.knowbase.vo.KnowledgeParam; import com.zzsn.knowbase.vo.KnowledgeParam;
import com.zzsn.knowbase.vo.KnowledgeVO; import com.zzsn.knowbase.vo.KnowledgeVO;
import com.zzsn.knowbase.vo.Result;
import javax.servlet.http.HttpServletRequest;
/** /**
* @Description: 知识服务 * @Description: 知识服务
...@@ -45,4 +48,8 @@ public interface IKnowledgeService { ...@@ -45,4 +48,8 @@ public interface IKnowledgeService {
IPage<KnowledgeVO> listFromPython(KnowledgeParam knowledgeParam, Integer pageNo, Integer pageSize, String column, String order); IPage<KnowledgeVO> listFromPython(KnowledgeParam knowledgeParam, Integer pageNo, Integer pageSize, String column, String order);
KnowledgeVO getById(String id); KnowledgeVO getById(String id);
Result<?> doImportInfo(HttpServletRequest request);
void doExcel(HttpServletRequest request, String fileSuffix);
} }
package com.zzsn.knowbase.service.impl;
import com.zzsn.knowbase.service.IKnowledgeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
/**
* Description: 异步处理service
* Author: EDY
* Date: 2023/7/26
*/
@Service
public class AsyncService {
@Autowired
@Lazy
IKnowledgeService knowledgeService;
//异步执行文件解析
@Async
public void doimport(HttpServletRequest request, MultipartFile multipartFile, String fileSuffix) {
String subjectId = request.getParameter("subjectId");
String isTopping = request.getParameter("isTopping");
String isExamine = request.getParameter("isExamine");
knowledgeService.doExcel(request, fileSuffix);
}
}
package com.zzsn.knowbase.service.impl; package com.zzsn.knowbase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.obs.services.model.PutObjectResult;
import com.zzsn.knowbase.constant.Constants; import com.zzsn.knowbase.constant.Constants;
import com.zzsn.knowbase.entity.*; import com.zzsn.knowbase.entity.*;
import com.zzsn.knowbase.enums.KnowTypeEnum; import com.zzsn.knowbase.enums.KnowTypeEnum;
...@@ -16,6 +19,7 @@ import com.zzsn.knowbase.service.KbKnowledgeProjectService; ...@@ -16,6 +19,7 @@ import com.zzsn.knowbase.service.KbKnowledgeProjectService;
import com.zzsn.knowbase.util.*; import com.zzsn.knowbase.util.*;
import com.zzsn.knowbase.vo.KnowledgeParam; import com.zzsn.knowbase.vo.KnowledgeParam;
import com.zzsn.knowbase.vo.KnowledgeVO; import com.zzsn.knowbase.vo.KnowledgeVO;
import com.zzsn.knowbase.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -36,7 +40,11 @@ import org.springframework.beans.BeanUtils; ...@@ -36,7 +40,11 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
...@@ -71,6 +79,9 @@ class KnowledgeServiceImpl implements IKnowledgeService { ...@@ -71,6 +79,9 @@ class KnowledgeServiceImpl implements IKnowledgeService {
@Value("${files.storage}") @Value("${files.storage}")
String filesStorage; String filesStorage;
@Autowired
private AsyncService asyncService;
@Override @Override
public void addKnowledge(KnowFile knowFile, Knowledge knowledge, KbAuthorizedUser userInfo) { public void addKnowledge(KnowFile knowFile, Knowledge knowledge, KbAuthorizedUser userInfo) {
...@@ -92,8 +103,8 @@ class KnowledgeServiceImpl implements IKnowledgeService { ...@@ -92,8 +103,8 @@ class KnowledgeServiceImpl implements IKnowledgeService {
File file = new File(filesStorage + knowledge.getFiles().get(0).getFilePath()); File file = new File(filesStorage + knowledge.getFiles().get(0).getFilePath());
html = DocUtil.convertDocStream2Html(new FileInputStream(file)); html = DocUtil.convertDocStream2Html(new FileInputStream(file));
String htmlWithTable = html.replace("</p>", "######</p>"); String htmlWithTable = html.replace("</p>", "######</p>");
htmlWithTable = htmlWithTable.replace("</title>", "######</title>"); htmlWithTable = htmlWithTable.replace("</title>", "######</title>");
htmlWithTable = htmlWithTable.replace("</h1>", "######</h1>"); htmlWithTable = htmlWithTable.replace("</h1>", "######</h1>");
contentStringList = Arrays.asList(htmlWithTable.split("######")); contentStringList = Arrays.asList(htmlWithTable.split("######"));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
...@@ -104,7 +115,7 @@ class KnowledgeServiceImpl implements IKnowledgeService { ...@@ -104,7 +115,7 @@ class KnowledgeServiceImpl implements IKnowledgeService {
for (String tem : contentStringList) { for (String tem : contentStringList) {
String text = Jsoup.parse(tem).text(); String text = Jsoup.parse(tem).text();
log.info("info:{}", text); log.info("info:{}", text);
if ((!tem.contains("<title>"))&&(!text.isEmpty())) { if ((!tem.contains("<title>")) && (!text.isEmpty())) {
knowledge.setTitle(text); knowledge.setTitle(text);
break; break;
} }
...@@ -445,6 +456,87 @@ class KnowledgeServiceImpl implements IKnowledgeService { ...@@ -445,6 +456,87 @@ class KnowledgeServiceImpl implements IKnowledgeService {
return null; return null;
} }
@Override
public Result<?> doImportInfo(HttpServletRequest request) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
if (fileMap.size() < 1) {
return Result.error("请上传excel或者word文件");
}
MultipartFile multipartFile = fileMap.get(new ArrayList<String>(fileMap.keySet()).get(0));
int index = multipartFile.getOriginalFilename().lastIndexOf(".");
String fileSuffix = multipartFile.getOriginalFilename().substring(index + 1);
if ("doc".equals(fileSuffix) || "docx".equals(fileSuffix) || "xls".equals(fileSuffix) || "xlsx".equals(fileSuffix)) {
asyncService.doimport(request, multipartFile, fileSuffix);
return Result.OK("已进行处理");
} else {
return Result.error("不支持的文件类型");
}
}
@Override
public void doExcel(HttpServletRequest request, String fileSuffix) {
String kbKnowledgeId = request.getParameter("kbKnowledgeId");
String knowledgeProjectId = request.getParameter("knowledgeProjectId");
String typeId = request.getParameter("typeId");
String createBy = request.getParameter("createBy");
try {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
MultipartFile multipartFile = fileMap.get(new ArrayList<String>(fileMap.keySet()).get(0));
//1.上传文件到文件服务器
// 将MultipartFile的文件内容保存到字节数组
byte[] fileData = multipartFile.getBytes();
List<List<String>> lists = ExcelExportUtil.readExcel(new ByteArrayInputStream(fileData), 1, 9);
//存入es
importInfo(lists, kbKnowledgeId, knowledgeProjectId, typeId,createBy);
} catch (Exception e) {
e.printStackTrace();
}
}
//导入发布库数据
public void importInfo(List<List<String>> lists, String kbKnowledgeId, String knowledgeProjectId, String typeId,String createBy ) {
for (List<String> info : lists) {
try {
Knowledge specialInformation = Knowledge.builder()
.kbKnowledgeId(kbKnowledgeId)
.knowledgeProjectId(knowledgeProjectId)
.typeId(typeId)
.createBy(createBy)
.importData(1)
.build();
specialInformation.setId(codeGenerateUtil.geneIdNo(Constants.FINANCE, 8));
//判断正文是否为空
if (StringUtils.isEmpty(info.get(3))) {
log.error("上传的数据为空");
return;
}
if (StringUtils.isNotEmpty(info.get(1))) {
specialInformation.setTitle(info.get(1));
}
if (StringUtils.isNotEmpty(info.get(4))) {
specialInformation.setAuthor(info.get(4));
}
if (StringUtils.isNotEmpty(info.get(5))) {
specialInformation.setOrigin(info.get(5));
}
if (StringUtils.isNotEmpty(info.get(6))) {
specialInformation.setPublishDate(EsDateUtil.esFieldDateFormat(info.get(6)));
}
specialInformation.setDeleteFlag(0);
specialInformation.setCreateTime(cn.hutool.core.date.DateUtil.format(new Date(), "yyyy-MM-dd'T'HH:mm:ss"));
esOpUtil.docSavaByEntity(Constants.ES_DATA_FOR_KNOWLEDGE, specialInformation.getId(), specialInformation);
} catch (NumberFormatException e) {
log.error("处理异常");
}
}
}
private String genKey(KnowledgeParam knowledgeParam) { private String genKey(KnowledgeParam knowledgeParam) {
String type = (knowledgeParam.getTypeIds() == null ? "" : knowledgeParam.getTypeIds()); String type = (knowledgeParam.getTypeIds() == null ? "" : knowledgeParam.getTypeIds());
String knowledgeProjectId = (knowledgeParam.getKnowledgeProjectId() == null ? "" : knowledgeParam.getKnowledgeProjectId()); String knowledgeProjectId = (knowledgeParam.getKnowledgeProjectId() == null ? "" : knowledgeParam.getKnowledgeProjectId());
......
package com.zzsn.knowbase.util;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
public class ExcelExportUtil {
/**
* 读取excel数据
*
* @param firstRow 第一行有用数据(0表示第一行)
* @param columnNum 有用数据的总列数
* @return java.util.List<java.util.List < java.lang.String>>
*/
public static List<List<String>> readExcel(InputStream inputStream, Integer firstRow, Integer columnNum) throws Exception {
List<List<String>> dataList = new ArrayList<>();
//获取整个excel
XSSFWorkbook hb = new XSSFWorkbook(inputStream);
int sheets = hb.getNumberOfSheets();
for (int i = 0; i < sheets; i++) {
XSSFSheet sheet = hb.getSheetAt(i);
//第一行
int firstRowNum = sheet.getFirstRowNum();
//最后一行
int lastRowNum = sheet.getPhysicalNumberOfRows();
for (int j = firstRowNum + firstRow; j < lastRowNum; j++) {
//获取行
XSSFRow row = sheet.getRow(j);
if (row != null) {
List<String> list = new ArrayList<>();
for (int m = 0; m < columnNum; m++) {
String data = ExcelExportUtil.getValue(row.getCell(m)).trim();
list.add(data);
}
dataList.add(list);
}
}
}
return dataList;
}
public static String getValue(XSSFCell xssfCell) {
if (xssfCell == null || xssfCell.toString().trim().equals("")) {
return "";
}
int cellType = xssfCell.getCellType();
if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {
if (HSSFDateUtil.isCellDateFormatted(xssfCell)) {
return TimeUtil.getDateString(xssfCell.getDateCellValue());
} else {
//防止数字变成科学计数法的形式
DecimalFormat df = new DecimalFormat("0");
return df.format(xssfCell.getNumericCellValue());
}
} else {
return xssfCell.getStringCellValue();
}
}
}
package com.zzsn.knowbase.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TimeUtil {
static SimpleDateFormat format;
private static Pattern patDate0 = Pattern.compile("\\d+-\\d{1,2}-\\d+");
private static Pattern patDate1 = Pattern.compile("\\d+[-\\s/年月日]\\d{1,2}-\\d+", Pattern.CASE_INSENSITIVE);
private static Pattern patDate2 = Pattern.compile("\\d+\\s+[A-Z][a-z]+\\s+\\d+");
private static Pattern patDate3 = Pattern.compile("[A-Z][a-z.]+\\s+\\d{1,2},\\s+\\d+");
private static Pattern patDate4 = Pattern.compile("\\d+年\\d+月\\d+日");
private static Pattern patDate4_1 = Pattern.compile("\\d+年\\d+月\\d+号");
private static Pattern patDate5 = Pattern.compile("\\d+/\\d{1,2}/\\d+");
private static Pattern patDate6 = Pattern.compile("\\d+\\.\\d+\\.\\d+");
private static Date thresholdDate = null;
private static SimpleDateFormat formatter0 = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat formatter0_1 = new SimpleDateFormat("yy-MM-dd");
private static SimpleDateFormat formatter2 = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
private static SimpleDateFormat formatter3_1 = new SimpleDateFormat("MMM dd, yyyy", Locale.ENGLISH);
private static SimpleDateFormat formatter3_2 = new SimpleDateFormat("MMM. dd, yyyy", Locale.ENGLISH);
private static SimpleDateFormat formatter4 = new SimpleDateFormat("yyyy年MM月dd");
private static SimpleDateFormat formatter5_1 = new SimpleDateFormat("yyyy/MM/dd");
private static SimpleDateFormat formatter5_2 = new SimpleDateFormat("dd/MM/yyyy");
private static SimpleDateFormat formatter5_4 = new SimpleDateFormat("yy/MM/dd");
private static SimpleDateFormat formatter5_3 = new SimpleDateFormat("dd/MM/yy");
private static SimpleDateFormat formatter6 = new SimpleDateFormat("yyyy.MM.dd");
private static SimpleDateFormat formatter6_1 = new SimpleDateFormat("dd.MM.yyyy");
public static String dateToString(Date date) {
format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return TimeUtil.format.format(date);
}
public static String getPublishDate(String raw) {
if (raw == null) {
return null;
}
Date date = transDate(raw);
if (date != null) {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("Asia/Shanghai"));
c.setTime(date);
Pattern p = Pattern.compile("(\\d{1,2})[:|:](\\d{1,2})([:|:]\\d{1,2}){0,1}");
Matcher m = p.matcher(raw);
while (m.find()) {
String hour = m.group(1);
if (hour != null) {
c.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hour));
}
String minute = m.group(2);
if (minute != null) {
c.set(Calendar.MINUTE, Integer.parseInt(minute));
}
String second = m.group(3);
if (second != null) {
c.set(Calendar.SECOND, Integer.parseInt(second.replaceAll("[::]", "")));
}
}
return format(c.getTime(), "yyyy-MM-dd");
} else {
return null;
}
}
private static String format(Date d, String format) {
if (d == null)
return "";
SimpleDateFormat myFormatter = new SimpleDateFormat(format);
return myFormatter.format(d);
}
private static Date transDate(String content) {
try {
Matcher dateMatcher = null;
Date date = null;
if (((dateMatcher = patDate0.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 0)) != null))
|| ((dateMatcher = patDate1.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 1)) != null))
|| ((dateMatcher = patDate2.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 2)) != null))
|| ((dateMatcher = patDate3.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 3)) != null))
|| ((dateMatcher = patDate4.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 4)) != null))
|| ((dateMatcher = patDate4_1.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 4)) != null))
|| ((dateMatcher = patDate5.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 5)) != null))
|| ((dateMatcher = patDate6.matcher(content)).find() && ((date = transDate(dateMatcher.group(), 6)) != null))
) {
return date;
}
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private static Date transDate(String source, int type) {
try {
if (thresholdDate == null) {
thresholdDate = formatter0.parse("1970-01-01");
}
Date date = null;
switch (type) {
case 0:
date = formatter0.parse(source);
if (date.before(thresholdDate)) {
date = formatter0_1.parse(source);
if (date.before(thresholdDate)) {
return null;
}
}
break;
case 1:
//date = formatter1.parse(source);
break;
case 2:
date = formatter2.parse(source);
break;
case 3:
try {
date = formatter3_1.parse(source);
} catch (Exception e) {
date = null;
}
if (date == null) {
date = formatter3_2.parse(source);
}
break;
case 4:
date = formatter4.parse(source);
break;
case 5:
try {
date = formatter5_1.parse(source);
} catch (Exception e) {
date = null;
}
if ((date == null) || (date.before(thresholdDate))) {
date = formatter5_2.parse(source);
}
if ((date == null) || (date.before(thresholdDate))) {
date = formatter5_3.parse(source);
}
if ((date == null) || (date.before(thresholdDate))) {
date = formatter5_4.parse(source);
}
break;
case 6:
try {
date = formatter6.parse(source);
} catch (ParseException e) {
date = null;
}
if ((date == null) || (date.before(thresholdDate))) {
date = formatter6_1.parse(source);
}
break;
}
if ((date != null) && (date.before(thresholdDate))) {
return null;
}
return date;
} catch (Exception e) {
return null;
}
}
/**
* 获取前7天的时间
* @param date
* @return
*/
public static String beforeWeek(Date date){
format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
//设置为指定日期
c.setTime(date);
c.add(Calendar.DATE,-7);
Date time = c.getTime();
return format.format(time);
}
/**
* 获取前30天的时间
* @param date
* @return
*/
public static String beforeMonth(Date date){
format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
//设置为指定日期
c.setTime(date);
c.add(Calendar.DATE,-30);
return format.format(c.getTime()) + " 00:00:00";
}
public static String getDateString(Date date) {
format = new SimpleDateFormat("yyyy-MM-dd");
return TimeUtil.format.format(date);
}
public static Date StringToDate(String dateString) throws ParseException {
format = new SimpleDateFormat("yyyy-MM-dd");
return format.parse(dateString);
}
public static String dateConvert(String dateString) throws ParseException {
format = new SimpleDateFormat("MM/dd/yyyy");
Date parse = format.parse(dateString);
return getDateString(parse);
}
/**
* 获取指定某一天的开始时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getDailyStartTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis();
}
/**
* 获取指定某一天的结束时间戳
*
* @param timeStamp 毫秒级时间戳
* @param timeZone 如 GMT+8:00
* @return
*/
public static Long getDailyEndTime(Long timeStamp, String timeZone) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
calendar.setTimeInMillis(timeStamp);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
return calendar.getTimeInMillis();
}
/**
* 判断两个时间是否为同一天
* @param date1
* @param date2
* @return
*/
public static boolean isSameDay(final Date date1, final Date date2) {
if(date1 == null || date2 == null) {
return false;
}
final Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
final Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
return isSame(cal1, cal2);
}
private static boolean isSame(final Calendar cal1, final Calendar cal2) {
if (cal1 == null || cal2 == null) {
return false;
}
return (cal1.get(Calendar.ERA) == cal2.get(Calendar.ERA) &&
cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR));
}
}
...@@ -33,6 +33,7 @@ public class KnowledgeVO { ...@@ -33,6 +33,7 @@ public class KnowledgeVO {
private String author; private String author;
private Integer score; private Integer score;
private Integer verifyStatus; private Integer verifyStatus;
private Integer importData;
private List<Content> contents; private List<Content> contents;
private List<KnowFile> files; private List<KnowFile> files;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论