fix: 法规符合性评估库搜素SQL问题

This commit is contained in:
2024-07-31 11:48:10 +08:00
parent aa6cb32c9c
commit 028b88377f
10 changed files with 125 additions and 31 deletions
@@ -170,6 +170,8 @@ public class ResultCommon {
public static final String ASSESS_DELETE_ERROR = "assess.delete.error";
//项目中有评估中的数据时,不允许删除
public static final String ASSESS_DELETE_ERROR2 = "assess.delete.error2";
//法规符合性排查流程有正在进行中的流程,不允许删除
public static final String SCC_DELETE_STANDARD_ERROR = "scc.delete.standard.error";
// 流程已分发,禁止驳回
public static final String PROCESS_ALREADY_DISTRIBUTED = "process.already.distributed";
@@ -15,8 +15,10 @@ import com.jero.common.util.MessageUtils;
import com.jero.common.util.ZipUtil;
import com.jero.common.util.obs.ObsBootUtil;
import com.jero.modules.activiti.common.ActivitiCommon;
import com.jero.modules.activiti.entity.ProcessAll;
import com.jero.modules.activiti.entity.ProcessApprovalRecord;
import com.jero.modules.activiti.entity.ProcessNode;
import com.jero.modules.activiti.enums.FinishFlagEnum;
import com.jero.modules.activiti.enums.ProcessTypeEnum;
import com.jero.modules.activiti.process.common.enums.ProcessType;
import com.jero.modules.activiti.process.common.service.ActFlowCommonService;
@@ -35,6 +37,7 @@ import com.jero.modules.activiti.process.standardComplianceCheck.entity.vo.Witho
import com.jero.modules.activiti.process.standardComplianceCheck.mapper.ProcessStandardComplianceCheckMapper;
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckDetailService;
import com.jero.modules.activiti.process.standardComplianceCheck.service.IProcessStandardComplianceCheckService;
import com.jero.modules.activiti.service.ProcessAllService;
import com.jero.modules.activiti.service.ProcessApprovalRecordService;
import com.jero.modules.activiti.service.ProcessNodeLinkService;
import com.jero.modules.activiti.service.ProcessNodeService;
@@ -43,6 +46,7 @@ import com.jero.modules.laws.common.service.impl.LawsCommonServiceImpl;
import com.jero.modules.laws.documenttool.entity.LawsDocumentSplit;
import com.jero.modules.laws.documenttool.mapper.DocumentSplitMapper;
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
import com.jero.modules.laws.standard.service.DoNotSplitStandardProvider;
import com.jero.modules.laws.utils.ExcelExportUtilPro;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
@@ -95,7 +99,7 @@ import static com.jero.modules.activiti.process.standardComplianceCheck.common.P
@Service
@Slf4j
public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<ProcessStandardComplianceCheckMapper, ProcessStandardComplianceCheck>
implements IProcessStandardComplianceCheckService {
implements IProcessStandardComplianceCheckService, DoNotSplitStandardProvider {
@Resource
private IProcessHandleService processHandleService;
@@ -127,6 +131,8 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
private ProcessNodeService processNodeService;
@Resource
private ProcessApprovalRecordService approvalRecordService;
@Resource
private ProcessAllService paService;
@Value("${jero.path.exportExcelTempPath}")
private String exportExcelTempPath;
@@ -1047,6 +1053,30 @@ public class ProcessStandardComplianceCheckServiceImpl extends ServiceImpl<Proce
}
return modelExcelVOList;
}
@Override
public List<String> getDoNotDeleteStandardIdList() {
List<ProcessStandardComplianceCheck> list = list();
List<ProcessStandardComplianceCheck> collect =
list.stream().filter(e -> StrUtil.isNotBlank(e.getStandardId())).collect(Collectors.toList());
// 去流程主表判断对应的流程是否已经结束
List<String> prcIdList = collect.stream().map(ProcessStandardComplianceCheck::getProcessInstanceId)
.collect(Collectors.toList());
LambdaQueryWrapper<ProcessAll> wrapper = new LambdaQueryWrapper<>();
wrapper.in(ProcessAll::getProcessInstanceId, prcIdList);
wrapper.eq(ProcessAll::getPrcStatus, FinishFlagEnum.INCOMPLETE.getValue());
// 未完成的流程
List<ProcessAll> incompleteList = paService.list(wrapper);
return collect.stream().filter(e -> incompleteList.stream()
.noneMatch(i -> i.getProcessInstanceId().equals(e.getProcessInstanceId())))
.map(ProcessStandardComplianceCheck::getStandardId)
.collect(Collectors.toList());
}
@Override
public String getResultCommon() {
return ResultCommon.SCC_DELETE_STANDARD_ERROR;
}
}
@@ -18,23 +18,18 @@
</sql>
<select id="queryByPage" resultType="com.jero.modules.assessmentLibrary.entity.LawsConformityAssessmentLibrary">
SELECT cs.id,
cs.standard_id,
sub.standard_number,
sub.standard_name,
lms.country AS applicableMarket,
cs.valuation_time
FROM laws_conformity_assessment_library cs
LEFT JOIN (
SELECT
COALESCE(d.standard_number, cs.standard_number) AS standard_number,
COALESCE(d.standard_name, cs.standard_name) AS standard_name,
cs.standard_id
FROM laws_conformity_assessment_library cs
LEFT JOIN laws_domestic_standard d ON d.id = cs.standard_id
) AS sub ON sub.standard_id = cs.standard_id
LEFT JOIN laws_market_standard lms ON lms.id = cs.applicable_market
${ew.customSqlSegment}
select *
from (select cs.id,
cs.standard_id,
IF(cs.standard_id IS NOT NULL, d.standard_number, cs.standard_number) AS standard_number,
IF(cs.standard_id IS NOT NULL, d.standard_name, cs.standard_name) AS standard_name,
lms.country as applicableMarket,
cs.valuation_time,
cs.create_time
from laws_conformity_assessment_library cs
left join laws_domestic_standard as d on d.id = cs.standard_id
left join laws_market_standard as lms on lms.id = cs.applicable_market) as t
${ew.customSqlSegment}
</select>
<select id="detail"
@@ -81,25 +81,25 @@ public class LawsConformityAssessmentLibraryServiceImpl extends ServiceImpl<Laws
QueryWrapper<LawsConformityAssessmentLibrary> queryWrapper = new QueryWrapper<>();
Page<LawsConformityAssessmentLibrary> page = new Page<>(pageNo, pageSize);
queryWrapper.like(StringUtils.isNotBlank(lawsConformityAssessmentLibrary.getStandardNumber()),
"sub.standard_number", lawsConformityAssessmentLibrary.getStandardNumber());
"standard_number", lawsConformityAssessmentLibrary.getStandardNumber());
queryWrapper.like(StringUtils.isNotBlank(lawsConformityAssessmentLibrary.getStandardName()),
"sub.standard_name", lawsConformityAssessmentLibrary.getStandardName());
"standard_name", lawsConformityAssessmentLibrary.getStandardName());
String applicableMarkets = lawsConformityAssessmentLibrary.getApplicableMarket();
if (StringUtils.isNotBlank(applicableMarkets)) {
String[] split = applicableMarkets.split(",");
for (String splitStr : split) {
queryWrapper.like("lms.country", splitStr);
queryWrapper.like("country", splitStr);
}
}
if (StringUtils.isNotBlank(lawsConformityAssessmentLibrary.getSelections())) {
queryWrapper.in("cs.id", Arrays.asList(lawsConformityAssessmentLibrary.getSelections().split(",")));
queryWrapper.in("id", Arrays.asList(lawsConformityAssessmentLibrary.getSelections().split(",")));
}
queryWrapper.between(lawsConformityAssessmentLibrary.getValuationTime() != null,
"valuation_time", lawsConformityAssessmentLibrary.getStartValuationTime(), lawsConformityAssessmentLibrary.getEndValuationTime());
queryWrapper.orderByDesc("cs.create_time");
queryWrapper.orderByDesc("create_time");
if (noAdminAuth()) {
String userId = UserUtils.getUserId();
queryWrapper.like("cs.all_approval_user", userId);
queryWrapper.like("all_approval_user", userId);
}
return lawsConformityAssessmentLibraryMapper.queryByPage(page, queryWrapper);
}
@@ -11,6 +11,7 @@ import com.jero.modules.compare.service.ISarFileCompareInfoService;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.service.ILawsCommonService;
import com.jero.modules.laws.standard.service.ILawsNodeRelationService;
import com.jero.modules.laws.standard.util.StandardUtil;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.tag.entity.LawsTag;
@@ -26,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -53,6 +55,9 @@ public class LawsDomesticController {
@Resource
private ISarFileCompareInfoService compareInfoService;
@Resource
private StandardUtil standardUtil;
private static final String MODULE_VALUE = TableNameEnum.DOMESTIC_REGULATIONS.getValue();
@AutoLog(value = "国内法规标准-分页列表查询")
@@ -147,12 +152,14 @@ public class LawsDomesticController {
public Result<String> deleteByIdsAndModule(@RequestBody @ApiParam(name = "ids", value = "主键(多个用逗号分隔)") Map<String,Object> parameterMap) {
// 删除校验
// processFbEntryChangeService.delCheck((String) parameterMap.get("ids"));
//删除标准时同步删除这个标准的收藏数据
lawsStandardCollectionService.deleteByStandardId((String) parameterMap.get("ids"));
// 删除标准时同步删除比对和拆分的相关数据
splitInfoService.deleteByStandardId((String) parameterMap.get("ids"));
compareInfoService.deleteByStandardId((String) parameterMap.get("ids"));
return Result.OK(lawsCommonService.deleteByIdsAndModule((String) parameterMap.get("ids"), MODULE_VALUE));
standardUtil.validDeleteStandard(Collections.singletonList((String) parameterMap.get("ids")));
// //删除标准时同步删除这个标准的收藏数据
// lawsStandardCollectionService.deleteByStandardId((String) parameterMap.get("ids"));
// // 删除标准时同步删除比对和拆分的相关数据
// splitInfoService.deleteByStandardId((String) parameterMap.get("ids"));
// compareInfoService.deleteByStandardId((String) parameterMap.get("ids"));
// return Result.OK(lawsCommonService.deleteByIdsAndModule((String) parameterMap.get("ids"), MODULE_VALUE));
return Result.OK();
}
@AutoLog(value = "国内法规标准-配置标准")
@@ -0,0 +1,11 @@
package com.jero.modules.laws.standard.service;
import java.util.List;
public interface DoNotSplitStandardProvider {
List<String> getDoNotDeleteStandardIdList();
String getResultCommon();
}
@@ -0,0 +1,46 @@
package com.jero.modules.laws.standard.util;
import com.jero.common.exception.JeroBootException;
import com.jero.modules.laws.standard.service.DoNotSplitStandardProvider;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Component
public class StandardUtil {
@Resource
private List<DoNotSplitStandardProvider> providers;
/**
* 判断是否可以删除
*
*/
public void validDeleteStandard(List<String> needDelStandardIdList) {
// 将需要删除的标准ID转换为HashSet以快速查找
HashSet<String> strings = new HashSet<>(needDelStandardIdList);
for (DoNotSplitStandardProvider provider : providers) {
List<String> data = provider.getDoNotDeleteStandardIdList();
// 提前退出如果没有禁止删除的ID
if (data.isEmpty()) {
continue;
}
// 将禁止删除的ID也转换为Set,这样可以更高效地检查交集
Set<String> doNotDeleteSet = new HashSet<>(data);
// 检查交集,如果存在,则抛出异常
for (String id : strings) {
if (doNotDeleteSet.contains(id)) {
throw new JeroBootException(provider.getResultCommon());
}
}
}
}
}
@@ -76,4 +76,5 @@ assess.delete.error=\u672A\u7B26\u5408\u9879\u4E2D\u6709\u6574\u6539\u4E2D\u3001
assess.delete.error2=\u9879\u76EE\u4E2D\u6709\u8BC4\u4F30\u4E2D\u7684\u6570\u636E\u65F6\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664
new.en.standard.number.conflict=\u8BE5\u65B0\u4F01\u6807\u7F16\u53F7\u4E0E\u5DF2\u5B58\u5728\u7684\u4F01\u6807\u7F16\u53F7\u91CD\u590D\uFF0C\u8BF7\u91CD\u65B0\u4FEE\u6539\u63D0\u4EA4
zip_root_one_excel=\u538B\u7F29\u5305\u6839\u76EE\u5F55\u4E0B\u4EC5\u80FD\u5B58\u5728\u4E00\u4E2Aexcel\u4E3A\u5BFC\u5165\u6570\u636E
message.no.exists.standard=\u6807\u51C6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
message.no.exists.standard=\u6807\u51C6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
scc.delete.standard.error=\u6CD5\u89C4\u7B26\u5408\u6027\u6392\u67E5\u6D41\u7A0B\u6709\u6B63\u5728\u8FDB\u884C\u4E2D\u7684\u6D41\u7A0B\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664
@@ -85,3 +85,4 @@ process.already.distributed=The process has been distributed, do not reject!
process.not.countersignature=It is not a countersign node task!
zip_root_one_excel=The zip file contains more than one excel file
message.no.exists.standard=The standard does not exist
scc.delete.standard.error=The standard has been used by the Standard Compliance Check Process, can not delete
@@ -84,3 +84,4 @@ process.already.distributed=\u6D41\u7A0B\u5DF2\u5206\u53D1,\u7981\u6B62\u9A73\u5
process.not.countersignature=\u4E0D\u662F\u4F1A\u7B7E\u8282\u70B9\u4EFB\u52A1!
zip_root_one_excel=\u538B\u7F29\u5305\u6839\u76EE\u5F55\u4E0B\u4EC5\u80FD\u5B58\u5728\u4E00\u4E2Aexcel\u4E3A\u5BFC\u5165\u6570\u636E
message.no.exists.standard=\u6807\u51C6\u4E0D\u5B58\u5728\uFF0C\u8BF7\u8054\u7CFB\u7BA1\u7406\u5458
scc.delete.standard.error=\u6CD5\u89C4\u7B26\u5408\u6027\u6392\u67E5\u6D41\u7A0B\u6709\u6B63\u5728\u8FDB\u884C\u4E2D\u7684\u6D41\u7A0B\uFF0C\u4E0D\u5141\u8BB8\u5220\u9664