update:修改法规释疑库查询单个接口

This commit is contained in:
sunzheng
2024-10-09 09:42:03 +08:00
parent 50c6f600fb
commit 8653321788
@@ -1,6 +1,5 @@
package com.jero.modules.laws.businessSupport.service.impl; package com.jero.modules.laws.businessSupport.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -8,7 +7,6 @@ import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon; import com.jero.common.api.vo.ResultCommon;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.modules.activiti.process.standardinterpret.entity.ProcessStandardInterpretClause;
import com.jero.modules.activiti.process.standardinterpret.service.StandardInterpretFlowService; import com.jero.modules.activiti.process.standardinterpret.service.StandardInterpretFlowService;
import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary; import com.jero.modules.laws.businessSupport.entity.LawsRegulationsQuestionLibrary;
import com.jero.modules.laws.businessSupport.mapper.LawsRegulationsQuestionLibraryMapper; import com.jero.modules.laws.businessSupport.mapper.LawsRegulationsQuestionLibraryMapper;
@@ -16,9 +14,10 @@ import com.jero.modules.laws.businessSupport.service.ILawsRegulationsQuestionLib
import com.jero.modules.laws.businessSupport.vo.RegulationVo; import com.jero.modules.laws.businessSupport.vo.RegulationVo;
import com.jero.modules.laws.businessSupport.vo.StandardVo; import com.jero.modules.laws.businessSupport.vo.StandardVo;
import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit;
import com.jero.modules.laws.documenttool.entity.LawsSplitByStandardNumber; import com.jero.modules.laws.documenttool.entity.LawsSplitByStandardNumber;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.documenttool.service.IDocumentSplitService; import com.jero.modules.laws.documenttool.service.IDocumentSplitService;
import com.jero.modules.split.entity.SarFileSplitInfoEO;
import com.jero.modules.split.service.ISarFileSplitInfoService; import com.jero.modules.split.service.ISarFileSplitInfoService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
@@ -26,7 +25,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@@ -48,6 +46,8 @@ public class LawsRegulationsQuestionLibraryServiceImpl extends ServiceImpl<LawsR
private ISarFileSplitInfoService sarFileSplitInfoService; private ISarFileSplitInfoService sarFileSplitInfoService;
@Resource @Resource
private IDocumentSplitService documentSplitService; private IDocumentSplitService documentSplitService;
@Resource
private DocumentSplitMapper documentSplitMapper;
@Override @Override
public IPage<LawsRegulationsQuestionLibrary> queryPage(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary, Integer pageNo, Integer pageSize) { public IPage<LawsRegulationsQuestionLibrary> queryPage(LawsRegulationsQuestionLibrary lawsRegulationsQuestionLibrary, Integer pageNo, Integer pageSize) {
@@ -142,77 +142,52 @@ public class LawsRegulationsQuestionLibraryServiceImpl extends ServiceImpl<LawsR
// 查询标准编号列表和条款列表 // 查询标准编号列表和条款列表
String standardNumber = lawsRegulationsQuestionLibrary.getStandardNumber(); String standardNumber = lawsRegulationsQuestionLibrary.getStandardNumber();
String standardId = lawsRegulationsQuestionLibrary.getStandardId(); String standardId = lawsRegulationsQuestionLibrary.getStandardId();
Map<String, StandardVo> standardNumberMap = new HashMap<>(); String regulationId = lawsRegulationsQuestionLibrary.getRegulationId();
String regulationNumber = lawsRegulationsQuestionLibrary.getRegulationNumber();
Map<String, String> standardNumberMap = new HashMap<>();
List<StandardVo> standardList = new ArrayList<>(); List<StandardVo> standardList = new ArrayList<>();
List<RegulationVo> regulationList = new ArrayList<>(); List<RegulationVo> regulationList = new ArrayList<>();
// 按照发布稿>TBT通报文件>报批>送审稿>征求意见稿>草案顺序找拆分数据
List<String> typeOrder = Arrays.asList("publish_of_original", "tbt_file", "draft_for_review", "draft_for_approval", "draft_for_comment", "draft", "other_file");
if (StringUtils.isNotBlank(standardNumber) && StringUtils.isNotBlank(standardId)) { if (StringUtils.isNotBlank(standardNumber) && StringUtils.isNotBlank(standardId)) {
List<String> standardIds = Arrays.asList(standardId.split(",")); List<String> standardIds = Arrays.asList(standardId.split(","));
List<String> standardNumbers = Arrays.asList(standardNumber.split(",")); List<String> standardNumbers = Arrays.asList(standardNumber.split(","));
for (int i = 0; i < standardIds.size(); i++) { for (int i = 0; i < standardIds.size(); i++) {
List<SarFileSplitInfoEO> splitInfoList = sarFileSplitInfoService.list( StandardVo standardVo = new StandardVo();
new LambdaQueryWrapper<SarFileSplitInfoEO>().eq(SarFileSplitInfoEO::getStandardId, standardIds.get(i)) standardVo.setStandardId(standardIds.get(i));
); standardVo.setStandardNumber(standardNumbers.get(i));
splitInfoList.sort(Comparator.comparingInt(e -> typeOrder.indexOf(e.getFileType()))); standardList.add(standardVo);
SarFileSplitInfoEO sarFileSplitInfoEO = splitInfoList.isEmpty() ? null : splitInfoList.get(0); standardNumberMap.put(standardNumbers.get(i), standardIds.get(i));
if (!Objects.isNull(sarFileSplitInfoEO)) {
StandardVo standardVo = new StandardVo();
standardVo.setStandardId(standardIds.get(i));
standardVo.setFileType(sarFileSplitInfoEO.getFileType());
standardVo.setStandardNumber(standardNumbers.get(i));
// 将 standardId 作为 key,jsonObject 作为 value 放入 Map
standardNumberMap.put(standardNumbers.get(i), standardVo);
standardList.add(standardVo);
}
} }
} }
lawsRegulationsQuestionLibrary.setStandardList(standardList); lawsRegulationsQuestionLibrary.setStandardList(standardList);
String regulationNumber = lawsRegulationsQuestionLibrary.getRegulationNumber(); if (StringUtils.isNotBlank(regulationId) && StringUtils.isNotBlank(regulationNumber)) {
Map<String, List<String>> keyValueMap = new HashMap<>(); List<String> regulationIdList = Arrays.asList(regulationId.split(","));
if (StringUtils.isNotBlank(regulationNumber)) { List<String> regulationNumberList = Arrays.asList(regulationNumber.split(","));
List<String> standardIds = Arrays.asList(regulationNumber.split(",")); for (int i = 0; i < regulationNumberList.size(); i++) {
for (String s : standardIds) { RegulationVo regulationVo = new RegulationVo();
String regulationId1 = regulationIdList.get(i);
String number = regulationNumberList.get(i);
LawsDocumentSplit lawsDocumentSplit = documentSplitMapper.selectById(regulationId1);
regulationVo.setId(regulationId1);
regulationVo.setItemNum(lawsDocumentSplit.getItemNum());
regulationVo.setItemTitle(lawsDocumentSplit.getItemTitle());
regulationVo.setTitleTranslation(lawsDocumentSplit.getTitleTranslation());
regulationVo.setItemContent(lawsDocumentSplit.getItemContent());
regulationVo.setTranslation(lawsDocumentSplit.getTranslation());
// 找到最后一个空格的位置 // 找到最后一个空格的位置
int lastSpaceIndex = s.lastIndexOf(" "); int lastSpaceIndex = number.lastIndexOf(" ");
// 确保空格存在并且位置不在字符串的开始或结束 // 确保空格存在并且位置不在字符串的开始或结束
if (lastSpaceIndex != -1 && lastSpaceIndex < s.length() - 1) { if (lastSpaceIndex != -1 && lastSpaceIndex < number.length() - 1) {
String key = s.substring(0, lastSpaceIndex); // 空格前的部分作为key String key = number.substring(0, lastSpaceIndex);
String value = s.substring(lastSpaceIndex + 1); // 空格后的部分作为value regulationVo.setStandardNumber(key);
// 如果key已存在,则追加value到该key的value列表中 regulationVo.setStandardId(standardNumberMap.get(key));
keyValueMap.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
}
}
}
for (Map.Entry<String, List<String>> entry : keyValueMap.entrySet()) {
String key = entry.getKey(); // 获取key
List<String> values = entry.getValue(); // 获取value(List<String>)
StandardVo standardVo = standardNumberMap.get(key);
if (!Objects.isNull(standardVo)) {
List<ProcessStandardInterpretClause> clauseList = standardInterpretFlowService.getClauseList(standardVo.getStandardId(), standardVo.getFileType());
// 过滤clauseList,只保留itemNum包含values中任意一个值的条目
List<ProcessStandardInterpretClause> filteredClauseList = clauseList.stream()
.filter(clause -> values.stream().anyMatch(value -> value.equals(clause.getItemNum()))) // 过滤条件
.collect(Collectors.toList());
for (ProcessStandardInterpretClause processStandardInterpretClause : filteredClauseList) {
RegulationVo regulationVo = new RegulationVo();
regulationVo.setStandardId(standardVo.getStandardId());
regulationVo.setStandardNumber(standardVo.getStandardNumber());
regulationVo.setItemNum(processStandardInterpretClause.getItemNum());
regulationVo.setItemTitle(processStandardInterpretClause.getItemTitle());
regulationVo.setTitleTranslation(processStandardInterpretClause.getTitleTranslation());
regulationVo.setItemContent(processStandardInterpretClause.getItemContent());
regulationVo.setTranslation(processStandardInterpretClause.getTranslation());
regulationList.add(regulationVo);
} }
regulationList.add(regulationVo);
} }
lawsRegulationsQuestionLibrary.setRegulationList(regulationList); lawsRegulationsQuestionLibrary.setRegulationList(regulationList);
} }
return lawsRegulationsQuestionLibrary; return lawsRegulationsQuestionLibrary;
} }
private void setResultData(List<LawsRegulationsQuestionLibrary> pageList) { private void setResultData(List<LawsRegulationsQuestionLibrary> pageList) {
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
pageList.forEach(lawsRegulationsQuestionLibrary -> { pageList.forEach(lawsRegulationsQuestionLibrary -> {