fix(asms): 拆分定时同步问题修复

This commit is contained in:
yjz
2024-03-05 11:13:27 +08:00
parent c88b1eb83c
commit f85f43f777
4 changed files with 31 additions and 51 deletions
@@ -1,33 +1,26 @@
package com.jero.modules.oss.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.constant.enums.LanguageEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.CommonUtils;
import com.jero.common.util.MinioUtil;
import com.jero.common.util.UUIDUtils;
import com.jero.common.util.oss.OssBootUtil;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.mapper.OSSFileMapper;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.util.MyStringUtils;
import me.zhyd.oauth.utils.UuidUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.*;
@Service("ossFileService")
public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> implements IOSSFileService {
@@ -176,11 +169,16 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
// 将文件上传至腾讯云 cos
String upload = MinioUtil.upload(mf, "/" + uploadCospath);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LoginUser loginUser = null;
try {
loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
} catch (Exception e) {
log.error(e.getMessage());
}
//存入文件表
oSSFile.setFileName(orgName);
oSSFile.setId(UuidUtils.getUUID());
oSSFile.setCreateBy(loginUser.getUsername());
oSSFile.setCreateBy(!Objects.isNull(loginUser) ? loginUser.getUsername() : "admin");
oSSFile.setCreateTime(new Date());
this.save(oSSFile);
// 文件路径做特殊处理
@@ -337,7 +337,7 @@ public class SynchronizationAsmsService {
if (CollectionUtils.isEmpty(codeList) || !codeList.contains(code)) {
LambdaQueryWrapper<LawsDomesticStandard> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code);
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper);
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper, false);
if(Objects.isNull(lawsDomesticStandard)){
return;
}
@@ -346,7 +346,7 @@ public class SynchronizationAsmsService {
queryWrapper1.eq(OSSFile::getStandardId, lawsDomesticStandard.getId());
queryWrapper1.eq(OSSFile::getStandardFileType, "publish_of_original");
queryWrapper1.like(OSSFile::getFileName, ".docx");
OSSFile ossFile = ossFileService.getOne(queryWrapper1);
OSSFile ossFile = ossFileService.getOne(queryWrapper1, false);
SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO();
sarFileSplitInfoEO.setStandardId(lawsDomesticStandard.getId());
@@ -535,47 +535,11 @@ public class SynchronizationAsmsService {
long time3 = System.currentTimeMillis();
log.info("=====================生成拆分详情左侧目录耗时:{}毫秒=====================", time3 - time2);
insertSplitList.forEach(sarFileSplitInfoEO -> {
String infoId = sarFileSplitInfoEO.getId();
List<LawsDocumentSplit> lawsDocumentSplitList = infoMap.get(infoId);
lawsDocumentSplitList.forEach(lawsDocumentSplit -> {
String itemContent = lawsDocumentSplit.getItemContent();
// 使用 jsoup 解析 HTML
Document doc = Jsoup.parse(itemContent);
// 选择所有的 <p> 元素
Elements paragraphs = doc.select("p");
// 存储提取的文本内容
List<String> textContents = new java.util.ArrayList<>();
for (Element paragraph : paragraphs) {
// 获取每个 <p> 元素的文本内容并添加到集合中
String textContent = paragraph.text();
textContents.add(textContent);
}
for (int i = 0; i < textContents.size(); i++) {
SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO();
sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20());
sarFileSplitItemsValEO.setType("TEXT");
sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId());
sarFileSplitItemsValEO.setItemContent(textContents.get(i));
sarFileSplitItemsValEO.setDisplaySeq(i+1);
sarFileSplitItemsValEO.setValidFlag(0);
sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO);
}
});
});
for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) {
HashMap<String, Object> parameter = new HashMap<>();
parameter.put("id", sarFileSplitInfoEO.getId());
documentSplitService.publish(parameter);
documentSplitService.publishTwo(parameter);
}
long time4 = System.currentTimeMillis();
log.info("=====================生成条文详情耗时:{}毫秒=====================", time4 - time3);
long end = System.currentTimeMillis();
log.info("=====================全部同步完成,耗时:{} 毫秒=====================", end - start);
log.info("=====================定时任务同步结束=====================");
@@ -176,6 +176,13 @@ public interface IDocumentSplitService {
*/
void publish(Map<String, Object> parameter);
/**
* 文档拆分-发布(不校验水平越权)
* @param parameter
* @return
*/
void publishTwo(Map<String, Object> parameter);
/**
* 文档拆分-撤回
* @param parameter
@@ -1106,9 +1106,20 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
@Override
public void publish(Map<String, Object> parameter) {
publishs(parameter, true);
}
@Override
public void publishTwo(Map<String, Object> parameter) {
publishs(parameter, false);
}
private void publishs(Map<String, Object> parameter, boolean b) {
String id = (String) parameter.get(ID);
// 水平越权
isHorizontalOverstep(id);
if (b){
// 水平越权
isHorizontalOverstep(id);
}
// 文档拆分信息(旧)
DocumentSplitInfo oldInfo = documentSplitMapper.queryDocumentSplitInfoById(id);
// 判断是否发布过