From b54aeea921e02caa37fc6343d2aeb42efe2a2969 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Mon, 4 Mar 2024 17:51:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(asms):=20=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asms/service/ILawsAsmsOpenApiService.java | 9 +- .../impl/LawsAsmsOpenApiServiceImpl.java | 140 +++++++++++------- .../impl/SynchronizationAsmsService.java | 76 +++++----- .../controller/DocumentSplitController.java | 14 ++ .../service/IDocumentSplitService.java | 7 + .../impl/DocumentSplitServiceImpl.java | 71 ++++++++- 6 files changed, 230 insertions(+), 87 deletions(-) diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java index 96c330bf..032387e3 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java @@ -1,11 +1,12 @@ package com.jero.modules.docking.asms.service; -import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; -import com.baomidou.mybatisplus.extension.service.IService; -import javax.servlet.http.HttpServletRequest; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; +import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit; import org.jetbrains.annotations.NotNull; +import javax.servlet.http.HttpServletRequest; import java.util.List; /** @@ -92,4 +93,6 @@ public interface ILawsAsmsOpenApiService extends IService { * @Description: 批量删除原字典配置项 **/ void removeDictItemBatch(List idList); + + void disposeItemVal(LawsDocumentSplit lawsDocumentSplit, String articleContent); } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java index 60cd0880..bd36608c 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java @@ -1,6 +1,5 @@ package com.jero.modules.docking.asms.service.impl; -import cn.hutool.http.HtmlUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -12,6 +11,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.jero.common.exception.JeroBootException; import com.jero.common.system.query.QueryGenerator; import com.jero.common.util.MinioUtil; +import com.jero.common.util.SnowflakeUtils; import com.jero.common.util.UUIDUtils; import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi; @@ -375,7 +375,13 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl paramMap = new HashMap<>(); lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { paramMap.put("lawCode", lawsAsmsDomestic.getCode()); - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); + + List> mapList = null; + try { + mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); + } catch (Exception e) { + return; + } LawsAsmsDomestic parseObject = JSONObject.parseObject(JSONObject.toJSONString(mapList.get(0)), LawsAsmsDomestic.class); log.info(parseObject.toString()); parseObject.setSyncFlag("B"); @@ -458,6 +464,9 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl objectMap = asmsPostUtil.sendGetReq2(lawsAsmsOpenApi.getApiUrl(), paramMap); if (Objects.isNull(objectMap)) return; Map standardTextPdf = (Map) objectMap.get("standardTextPdf"); - String fileName = standardTextPdf.get("fileName"); - String fileType = standardTextPdf.get("fileType"); - String url = standardTextPdf.get("url"); - if (StringUtils.isNotBlank(url)) { - upload(url, fileName, fileType, id, code); + if (!Objects.isNull(standardTextPdf)){ + String fileName = standardTextPdf.get("fileName"); + String fileType = standardTextPdf.get("fileType"); + String url = standardTextPdf.get("url"); + if (StringUtils.isNotBlank(url)) { + upload(url, fileName, fileType, id, code); + } } + Map standardTextWord = (Map) objectMap.get("standardTextWord"); - fileName = standardTextWord.get("fileName"); - fileType = standardTextWord.get("fileType"); - url = standardTextWord.get("url"); - if (StringUtils.isNotBlank(url)) { - upload(url, fileName, fileType, id, code); + if (!Objects.isNull(standardTextWord)){ + String fileName = standardTextWord.get("fileName"); + String fileType = standardTextWord.get("fileType"); + String url = standardTextWord.get("url"); + if (StringUtils.isNotBlank(url)) { + upload(url, fileName, fileType, id, code); + } } }); // 状态设置为已同步 @@ -577,7 +591,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code); - LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper); + LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper, false); if (Objects.isNull(lawsDomesticStandard)) { return; } @@ -638,6 +652,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3); LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit(); + lawsDocumentSplit.setId(String.valueOf(SnowflakeUtils.snowflake())); lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId()); lawsDocumentSplit.setItemNum(eMap.get("termsNum")); lawsDocumentSplit.setItemTitle(eMap.get("termsName")); @@ -650,25 +665,11 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl" + articleContent + "

"; - } + // 处理条文详情 + disposeItemVal(lawsDocumentSplit, articleContent); // 重复性校验 - LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( - new LambdaQueryWrapper() - .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) - .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) - .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); - if (!Objects.isNull(lawsDocumentSplits)){ - // 合并 - String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; - lawsDocumentSplitMapper.update(null, - new LambdaUpdateWrapper() - .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) - .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); - return; - } +// if (duplicateCheck(lawsDocumentSplit, articleContent)) {return;} + lawsDocumentSplit.setItemContent(articleContent); lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); @@ -840,6 +841,64 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl() + .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) + .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) + .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); + if (!Objects.isNull(lawsDocumentSplits)){ + // 合并 + String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; + lawsDocumentSplitMapper.update(null, + new LambdaUpdateWrapper() + .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) + .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); + return true; + } + return false; + } + + @Override + public void disposeItemVal(LawsDocumentSplit lawsDocumentSplit, String articleContent) { + // 处理条文内容详情表 + Document document = Jsoup.parse(articleContent); + Elements elements = document.select("p:not(table p):not(:empty), img, table"); + if (elements.isEmpty() && StringUtils.isNotBlank(articleContent)){ + SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); + sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); + sarFileSplitItemsValEO.setDisplaySeq(1); + sarFileSplitItemsValEO.setValidFlag(0); + sarFileSplitItemsValEO.setType("TEXT"); + sarFileSplitItemsValEO.setItemContent(articleContent); + sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); + return; + } + for (int i = 0; i < elements.size(); i++) { + Element element = elements.get(i); + if (StringUtils.isBlank(element.text()) && "p".equals(element.tagName())){ + continue; + } + SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); + if ("table".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("TABLE"); + sarFileSplitItemsValEO.setItemContent(element.outerHtml()); + }else if ("img".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("IMG"); + sarFileSplitItemsValEO.setItemContent(element.attr("src")); + }else if ("p".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("TEXT"); + sarFileSplitItemsValEO.setItemContent(element.text()); + } + sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); + sarFileSplitItemsValEO.setDisplaySeq(i + 1); + sarFileSplitItemsValEO.setValidFlag(0); + sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); + } + } + @NotNull @Override public String disposeImg(String articleContent) { @@ -1009,23 +1068,4 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl\"\"222"; - //String str = "\"\"\n"; - // 定义正则表达式匹配 img 标签及其属性值 - Pattern pattern = Pattern.compile("(<\\s*img[^>]*>)"); - Matcher matcher = pattern.matcher(str); - String regex2 = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"; - while (matcher.find()) { - String imageUrl = matcher.group(1); - Matcher m = Pattern.compile(regex2).matcher(imageUrl); - String urlSuffix = ""; - while (m.find()) { - String group = m.group(1); - urlSuffix = group.substring(group.indexOf("getImg")); - } - System.out.println(urlSuffix); - } - } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java index 4d75c1d8..f9bfc22b 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.jero.common.exception.JeroBootException; import com.jero.common.util.MinioUtil; +import com.jero.common.util.SnowflakeUtils; import com.jero.common.util.UUIDUtils; import com.jero.modules.docking.asms.entity.LawsAsmsDomestic; import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper; @@ -37,18 +38,14 @@ import com.jero.modules.system.service.ISysDictItemService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.*; -import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.client.RestTemplate; -import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.InputStream; @@ -188,6 +185,9 @@ public class SynchronizationAsmsService { String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 if (parts.length < 3) { parts = lawsAsmsDomestic.getCode().split("[—\\s]"); // 使用空格或破折号作为分隔符 + if (parts.length < 3) { + parts = lawsAsmsDomestic.getCode().split("[一\\s]"); // 使用一或破折号作为分隔符 + } } // 封装实例 LawsDomesticStandard lawsDomesticStandard = new LawsDomesticStandard(); @@ -234,7 +234,7 @@ public class SynchronizationAsmsService { // 代替标准号 lawsReplacedStandardService.addRelation(lawsAsmsDomestic.getReplaceCode(), lawsAsmsDomestic.getCode(), 1); // 标准性质 - /*itemValues = getItemValues(lawsAsmsDomestic.getStandardNature(), + /*itemValues = getItemValues(lawsAsmsDomestic.getStandardNature(), "1695010513489833985", sysDictItemList);*/ lawsDomesticStandard.setStandardProperty("SN002"); // 标准状态 @@ -275,18 +275,23 @@ public class SynchronizationAsmsService { Map objectMap = asmsPostUtil.sendGetReq2(fileUrl, fileParamMap); if (!Objects.isNull(objectMap)) { Map standardTextPdf = (Map) objectMap.get("standardTextPdf"); - String fileName = standardTextPdf.get("fileName"); - String fileType = standardTextPdf.get("fileType"); - String uri = standardTextPdf.get("url"); - if (StringUtils.isNotBlank(uri)) { - upload(uri, fileName, fileType, id, code); + if (!Objects.isNull(standardTextPdf)){ + String fileName = standardTextPdf.get("fileName"); + String fileType = standardTextPdf.get("fileType"); + String urls = standardTextPdf.get("url"); + if (StringUtils.isNotBlank(urls)) { + upload(urls, fileName, fileType, id, code); + } } + Map standardTextWord = (Map) objectMap.get("standardTextWord"); - fileName = standardTextWord.get("fileName"); - fileType = standardTextWord.get("fileType"); - uri = standardTextWord.get("url"); - if (StringUtils.isNotBlank(uri)) { - upload(uri, fileName, fileType, id, code); + if (!Objects.isNull(standardTextWord)){ + String fileName = standardTextWord.get("fileName"); + String fileType = standardTextWord.get("fileType"); + String urls = standardTextWord.get("url"); + if (StringUtils.isNotBlank(urls)) { + upload(urls, fileName, fileType, id, code); + } } } }); @@ -396,6 +401,7 @@ public class SynchronizationAsmsService { Map objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3); LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit(); + lawsDocumentSplit.setId(String.valueOf(SnowflakeUtils.snowflake())); lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId()); lawsDocumentSplit.setItemNum(eMap.get("termsNum")); lawsDocumentSplit.setItemTitle(eMap.get("termsName")); @@ -408,25 +414,11 @@ public class SynchronizationAsmsService { log.error(e.getMessage()); log.error("图片处理失败!"); } - // 处理表格 - if (articleContent.contains("" + articleContent + "

"; - } + // 处理条文详情 + lawsAsmsOpenApiService.disposeItemVal(lawsDocumentSplit, articleContent); // 重复性校验 - LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( - new LambdaQueryWrapper() - .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) - .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) - .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); - if (!Objects.isNull(lawsDocumentSplits)){ - // 合并 - String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; - lawsDocumentSplitMapper.update(null, - new LambdaUpdateWrapper() - .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) - .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); - return; - } +// if (duplicateCheck(lawsDocumentSplit, articleContent)) {return;} + lawsDocumentSplit.setItemContent(articleContent); lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); @@ -589,6 +581,24 @@ public class SynchronizationAsmsService { log.info("=====================定时任务同步结束====================="); } + private boolean duplicateCheck(LawsDocumentSplit lawsDocumentSplit, String articleContent) { + LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( + new LambdaQueryWrapper() + .eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId()) + .eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum()) + .eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle())); + if (!Objects.isNull(lawsDocumentSplits)){ + // 合并 + String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : ""; + lawsDocumentSplitMapper.update(null, + new LambdaUpdateWrapper() + .set(LawsDocumentSplit::getItemContent, itemContent + articleContent) + .eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId())); + return true; + } + return false; + } + public void syncSplitByStandardNumber(String standardNumber) { log.info("=====================定时同步文档拆分====================="); long start = System.currentTimeMillis(); diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java index ee5f0ca8..bc27c5e2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/controller/DocumentSplitController.java @@ -437,4 +437,18 @@ public class DocumentSplitController { * documentSplitService.exportDocumentSplitDetail(parameter, request, response); * } */ + + /** + * 标准拆分详情-重新处理条文详情 + * @param isAsmsImport + * @param serialNumber + * @return + */ + @AutoLog(value = "标准拆分详情-重新处理条文详情") + @ApiOperation(value = "标准拆分详情-重新处理条文详情") + @GetMapping("/disposeItemVal") + public Result disposeItemVal(String isAsmsImport,String serialNumber) { + documentSplitService.disposeItemVal(isAsmsImport, serialNumber); + return Result.OK(MessageUtils.getMessage(ResultCommon.OK)); + } } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java index 98382df8..4f50993a 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/IDocumentSplitService.java @@ -216,4 +216,11 @@ public interface IDocumentSplitService { * @param jsonObject */ void batchSplit(JSONObject jsonObject); + + /** + * 重新处理条文详情 + * @param isAsmsImport + * @param serialNumber + */ + void disposeItemVal(String isAsmsImport, String serialNumber); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java index 0c9a9f7b..fc9c4c94 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/documenttool/service/impl/DocumentSplitServiceImpl.java @@ -51,6 +51,7 @@ import com.jero.modules.split.enums.SplitFileTypeTypeEnum; import com.jero.modules.split.mapper.SarFileSplitItemsValEOMapper; import com.jero.modules.split.page.SarFileSplitMenuEOPage; import com.jero.modules.split.service.ISarFileSplitInfoService; +import com.jero.modules.split.service.ISarFileSplitItemsValEOService; import com.jero.modules.split.service.ISarFileSplitMenuEOService; import com.jero.modules.split.service.impl.FileSpiltService; import com.jero.modules.sys.entity.LawsEnterpriseStandardLevel; @@ -79,6 +80,10 @@ import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.shiro.SecurityUtils; import org.jetbrains.annotations.NotNull; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -127,6 +132,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { private final PartNameService partNameService; private final ILawsLabelDatabaseService lawsLabelDatabaseService; private final ISysBaseAPI sysBaseAPI; + private final ISarFileSplitItemsValEOService sarFileSplitItemsValEOService; private static final String INFO_ID = "info_id"; private static final String ID = "id"; private static final String IDS = "ids"; @@ -156,7 +162,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { ILawsGradeService lawsGradeService, PartNameService partNameService, ILawsLabelDatabaseService lawsLabelDatabaseService, - ISysBaseAPI sysBaseAPI) { + ISysBaseAPI sysBaseAPI, + ISarFileSplitItemsValEOService sarFileSplitItemsValEOService) { this.documentSplitMapper = documentSplitMapper; this.sarFileSplitInfoService = sarFileSplitInfoService; this.lawsCommonMapper = lawsCommonMapper; @@ -176,6 +183,7 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { this.partNameService = partNameService; this.lawsLabelDatabaseService = lawsLabelDatabaseService; this.sysBaseAPI = sysBaseAPI; + this.sarFileSplitItemsValEOService = sarFileSplitItemsValEOService; } @Autowired @@ -1361,6 +1369,67 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService { } } + @Override + public void disposeItemVal(String isAsmsImport, String serialNumber) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(StringUtils.isNotBlank(isAsmsImport), SarFileSplitInfoEO::getIsAsmsImport, isAsmsImport); + queryWrapper.eq(StringUtils.isNotBlank(serialNumber), SarFileSplitInfoEO::getSerialNumber, serialNumber); + List list = sarFileSplitInfoService.list(queryWrapper); + + for (SarFileSplitInfoEO sarFileSplitInfoEO : list) { + // 查询条文表 + List lawsDocumentSplits = lawsDocumentSplitMapper.selectList( + new LambdaQueryWrapper() + .in(LawsDocumentSplit::getInfoId, sarFileSplitInfoEO.getId())); + for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplits) { + // 先删除旧条文详情 + sarFileSplitItemsValEOMapper.delete( + new LambdaQueryWrapper() + .eq(SarFileSplitItemsValEO::getItemId, lawsDocumentSplit.getId())); + + // 构建新条文详情 + if (StringUtils.isNotBlank(lawsDocumentSplit.getItemContent())){ + Document document = Jsoup.parse(lawsDocumentSplit.getItemContent()); + Elements elements = document.select("p:not(table p):not(:empty), img, table"); + if (elements.isEmpty() && StringUtils.isNotBlank(lawsDocumentSplit.getItemContent())){ + SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); + sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); + sarFileSplitItemsValEO.setDisplaySeq(1); + sarFileSplitItemsValEO.setValidFlag(0); + sarFileSplitItemsValEO.setType("TEXT"); + sarFileSplitItemsValEO.setItemContent(lawsDocumentSplit.getItemContent()); + sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); + return; + } + for (int i = 0; i < elements.size(); i++) { + Element element = elements.get(i); + if (StringUtils.isBlank(element.text()) && "p".equals(element.tagName())){ + continue; + } + SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO(); + if ("table".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("TABLE"); + sarFileSplitItemsValEO.setItemContent(element.outerHtml()); + }else if ("img".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("IMG"); + sarFileSplitItemsValEO.setItemContent(element.attr("src")); + }else if ("p".equals(element.tagName())){ + sarFileSplitItemsValEO.setType("TEXT"); + sarFileSplitItemsValEO.setItemContent(element.text()); + } + sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20()); + sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId()); + sarFileSplitItemsValEO.setItemContent(element.outerHtml()); + sarFileSplitItemsValEO.setDisplaySeq(i + 1); + sarFileSplitItemsValEO.setValidFlag(0); + sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO); + } + } + } + } + } + private void manageData(Map resultMap, StringBuilder fieldsBuilder, List valuesList) { // 所有key(字段名) resultMap.forEach((k, v) -> {