提交 9e9940bf authored 作者: 马晨俊's avatar 马晨俊

mcj:更新规则显示

上级 8adbace7
package com.zjty.project.inspect.controller; package com.zjty.project.inspect.controller;
import com.zjty.project.inspect.entity.CustomPage; import com.zjty.project.inspect.entity.CustomPage;
import com.zjty.project.inspect.entity.PageResult;
import com.zjty.project.inspect.entity.RuleCollection;
import com.zjty.project.inspect.entity.RuleQo; import com.zjty.project.inspect.entity.RuleQo;
import com.zjty.project.inspect.service.RuleService; import com.zjty.project.inspect.service.RuleService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -77,16 +79,6 @@ public class RuleController { ...@@ -77,16 +79,6 @@ public class RuleController {
return ResponseEntity.ok(ruleService.findAll()); return ResponseEntity.ok(ruleService.findAll());
} }
/**
* 查询所有规则
* @return 规则
*/
@ApiOperation("查询所有规则")
@GetMapping("/test")
public ResponseEntity test(){
ruleService.test();
return ResponseEntity.ok(200);
}
/** /**
* 分页+多条件查询 * 分页+多条件查询
* @param searchMap 查询条件封装 * @param searchMap 查询条件封装
...@@ -101,7 +93,6 @@ public class RuleController { ...@@ -101,7 +93,6 @@ public class RuleController {
}) })
@RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST) @RequestMapping(value="/search/{page}/{size}",method=RequestMethod.POST)
public ResponseEntity findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){ public ResponseEntity findSearch(@RequestBody Map searchMap , @PathVariable int page, @PathVariable int size){
CustomPage<RuleQo> search = ruleService.findSearch(searchMap, page, size); return ResponseEntity.ok( ruleService.findSearch(searchMap, page, size));
return ResponseEntity.ok(search);
} }
} }
package com.zjty.project.inspect.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Mcj
* @date 2020-02-27 14:42
*/
@Data
@ApiModel(value = "规则类")
public class RuleAndReportVo {
/**
* 发现问题的文件地址
*/
private String filePath;
/**
* 匹配行数
*/
@ApiModelProperty(value = "权限",example = "1")
private Integer lineNum;
}
package com.zjty.project.inspect.entity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import java.util.Date;
/**
* @author Mcj
* @date 2020-02-27 14:42
*/
@Data
@Entity
@ApiModel(value = "规则类")
public class RuleCollection {
/**
* 主键id
*/
@Id
@Column(length = 48)
private String id;
/**
* 技术名称
*/
private String technologyName;
/**
* 目标关键字
*/
private String target;
/**
* 匹配的文件后缀
*/
private String suffix;
/**
* 适配技术id
*/
private String technologyId;
/**
* 数据创建时间
*/
@Column(name="create_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP",insertable = false,updatable = false)
@CreatedDate
private Date createDate;
/**
* 数据更新时间
*/
@Column(name="update_time",columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP",insertable = false)
@LastModifiedDate
private Date updateDate;
}
...@@ -8,6 +8,7 @@ import com.zjty.project.inspect.enums.DependenceManagement; ...@@ -8,6 +8,7 @@ import com.zjty.project.inspect.enums.DependenceManagement;
import com.zjty.project.inspect.enums.Framework; import com.zjty.project.inspect.enums.Framework;
import com.zjty.project.inspect.enums.Language; import com.zjty.project.inspect.enums.Language;
import com.zjty.project.inspect.enums.RecastMethod; import com.zjty.project.inspect.enums.RecastMethod;
import com.zjty.project.inspect.service.RuleService;
import com.zjty.project.inspect.utils.*; import com.zjty.project.inspect.utils.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
...@@ -36,14 +37,13 @@ import java.util.stream.Collectors; ...@@ -36,14 +37,13 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
@Transactional() @Transactional()
public class Inspector { public class Inspector {
@Autowired @Autowired
private AnalysisFile analysisFile; private AnalysisFile analysisFile;
@Autowired @Autowired
private BudgetUitl budgetUitl; private BudgetUitl budgetUitl;
@Autowired @Autowired
private RuleDao ruleDao; private RuleService ruleService;
@Autowired @Autowired
private TechnologyDao technologyDao; private TechnologyDao technologyDao;
@Autowired @Autowired
...@@ -138,6 +138,7 @@ public class Inspector { ...@@ -138,6 +138,7 @@ public class Inspector {
/** /**
* 评估 * 评估
*
* @return 报告 * @return 报告
*/ */
public ReportVo inspect() throws IOException { public ReportVo inspect() throws IOException {
...@@ -145,6 +146,7 @@ public class Inspector { ...@@ -145,6 +146,7 @@ public class Inspector {
initData(); initData();
//扫描文件 //扫描文件
scanFiles(); scanFiles();
//配置
inspectParameter.setCodeSize((int) codeSize); inspectParameter.setCodeSize((int) codeSize);
report.setFileNum(fileNum); report.setFileNum(fileNum);
report.setFileLine(fileLine); report.setFileLine(fileLine);
...@@ -152,7 +154,7 @@ public class Inspector { ...@@ -152,7 +154,7 @@ public class Inspector {
//统计项目语言 //统计项目语言
setReportLanguageAndFrame(); setReportLanguageAndFrame();
//根据扫描结果以及用户配置得出需要使用的规则及技术 //根据扫描结果以及用户配置得出需要使用的规则及技术
ruleTransform(report.getRecastMethod()); ruleTransform(inspectParameter.getRecastMethod());
//解析配置文件集合 //解析配置文件集合
for (Map.Entry<String, List<Path>> entry : configFileTypePathsMapping.entrySet()) { for (Map.Entry<String, List<Path>> entry : configFileTypePathsMapping.entrySet()) {
switch (entry.getKey()) { switch (entry.getKey()) {
...@@ -169,6 +171,10 @@ public class Inspector { ...@@ -169,6 +171,10 @@ public class Inspector {
for (PomDependency dependency : projectPom.getDependencies()) { for (PomDependency dependency : projectPom.getDependencies()) {
setRule(path, stringBuilder, dependency); setRule(path, stringBuilder, dependency);
} }
List<String> lines = Files.readAllLines(path);
for (int i = 0; i < lines.size(); i++) {
valiWarn(rules, path, lines.get(i), i + 1);
}
dependencyVo.add(projectPom); dependencyVo.add(projectPom);
} }
} }
...@@ -192,7 +198,7 @@ public class Inspector { ...@@ -192,7 +198,7 @@ public class Inspector {
//将文件的每一行都与规则匹配 //将文件的每一行都与规则匹配
List<String> strings = Files.readAllLines(path1); List<String> strings = Files.readAllLines(path1);
for (int i = 0; i < strings.size(); i++) { for (int i = 0; i < strings.size(); i++) {
int i1 = valiWarn(rules, path1, strings.get(i), i + 1); valiWarn(rules, path1, strings.get(i), i + 1);
} }
} catch (IOException e) { } catch (IOException e) {
log.error("解析{}出错,异常信息为{}", path1.toAbsolutePath().toString(), e.getMessage()); log.error("解析{}出错,异常信息为{}", path1.toAbsolutePath().toString(), e.getMessage());
...@@ -222,7 +228,7 @@ public class Inspector { ...@@ -222,7 +228,7 @@ public class Inspector {
report.setDependencyVo(dependencyVo); report.setDependencyVo(dependencyVo);
//数据转换 //数据转换
HashMap<String, List<Warn>> warnMap = getWarnMap(); HashMap<String, List<Warn>> warnMap = getWarnMap();
ruleDao.saveAll(rules); ruleService.addRule(rules);
report.setWarnDetails(warnMap); report.setWarnDetails(warnMap);
log.info("评估报告关键技术,{}", warnMap); log.info("评估报告关键技术,{}", warnMap);
return report; return report;
...@@ -261,23 +267,24 @@ public class Inspector { ...@@ -261,23 +267,24 @@ public class Inspector {
/** /**
* rule所需要数据装配 * rule所需要数据装配
* @param status 状态
* 1:改造
* 2:适配
*/ */
private void ruleTransform(Integer status) { private void ruleTransform(Integer status) {
//如果需要改造则查询所有规则
if (status == 1) { if (status == 1) {
List<Technology> front = technologyDao.findAllByBackorfrontEquals(1); this.ruleList = ruleService.findRules();
List<String> ids = front.stream().map(Technology::getId).collect(Collectors.toList());
this.ruleList = ruleDao.findAllByTechnologyIdIn(ids);
} else {
if (inspectParameter.getRecastMethod() == 1) {
this.ruleList = ruleDao.findAll();
} else { } else {
//只查询前端技术
List<Technology> front = technologyDao.findAllByBackorfrontEquals(1); List<Technology> front = technologyDao.findAllByBackorfrontEquals(1);
List<String> ids = front.stream().map(Technology::getId).collect(Collectors.toList()); List<String> technologyIds = front.stream().map(Technology::getId).collect(Collectors.toList());
this.ruleList = ruleDao.findAllByTechnologyIdIn(ids); this.ruleList = ruleService.findAllByTechnologyIdIn(technologyIds);
} }
} //得到目前适用的技术id
Set<String> id = ruleList.stream().map(Rule::getTechnologyId).collect(Collectors.toSet()); Set<String> technologyIds = ruleList.stream().map(Rule::getTechnologyId).collect(Collectors.toSet());
List<Technology> technologies = technologyDao.findAllByIdIn(new ArrayList<>(id));
List<Technology> technologies = technologyDao.findAllByIdIn(new ArrayList<>(technologyIds));
for (Technology technology : technologies) { for (Technology technology : technologies) {
technologyHashMap.put(technology.getId(), technology); technologyHashMap.put(technology.getId(), technology);
} }
...@@ -291,13 +298,13 @@ public class Inspector { ...@@ -291,13 +298,13 @@ public class Inspector {
} }
} }
ArrayList<String> ruleSuffixKeys = new ArrayList<>(); ArrayList<String> ruleSuffixKeys = new ArrayList<>();
for (String s : ruleSuffixFilePathMap.keySet()) { for (String suffix : ruleSuffixFilePathMap.keySet()) {
if (!ruleSuffixMap.containsKey(s)) { if (!ruleSuffixMap.containsKey(suffix)) {
ruleSuffixKeys.add(s); ruleSuffixKeys.add(suffix);
} }
} }
for (String key : ruleSuffixKeys) { for (String suffix : ruleSuffixKeys) {
ruleSuffixFilePathMap.remove(key); ruleSuffixFilePathMap.remove(suffix);
} }
} }
...@@ -309,6 +316,7 @@ public class Inspector { ...@@ -309,6 +316,7 @@ public class Inspector {
ruleSuffixFilePathMap = new HashMap<>(); ruleSuffixFilePathMap = new HashMap<>();
ruleSuffixMap = new HashMap<>(); ruleSuffixMap = new HashMap<>();
technologyHashMap = new HashMap<>(); technologyHashMap = new HashMap<>();
supportWarns = new ArrayList<>();
warns.clear(); warns.clear();
rules.clear(); rules.clear();
//查询技术,构造支持与非支持技术对象,3个对象 //查询技术,构造支持与非支持技术对象,3个对象
...@@ -341,9 +349,9 @@ public class Inspector { ...@@ -341,9 +349,9 @@ public class Inspector {
* 查询三个默认依赖 * 查询三个默认依赖
*/ */
private void findExistTechnology() { private void findExistTechnology() {
techJavaSupport = technologyDao.findAllByTechnologyNameEquals("国产化依赖(支持)"); techJavaSupport = technologyDao.findAllByTechnologyNameEquals("内部依赖(支持)");
techNotCnSupport = technologyDao.findAllByTechnologyNameEquals("非国产化依赖(不支持)"); techNotCnSupport = technologyDao.findAllByTechnologyNameEquals("内部依赖(不支持)");
techUnKnowSupport = technologyDao.findAllByTechnologyNameEquals("未知依赖(未知)"); techUnKnowSupport = technologyDao.findAllByTechnologyNameEquals("内部依赖(未知)");
} }
/** /**
...@@ -351,7 +359,7 @@ public class Inspector { ...@@ -351,7 +359,7 @@ public class Inspector {
*/ */
private void initRule() { private void initRule() {
//查询所有规则,第一遍扫描文件需要 //查询所有规则,第一遍扫描文件需要
this.ruleList = ruleDao.findAll(); this.ruleList = ruleService.findRules();
//根据后缀名,收集文件进行操作 //根据后缀名,收集文件进行操作
for (Rule rule : ruleList) { for (Rule rule : ruleList) {
if (!ruleSuffixFilePathMap.containsKey(rule.getSuffix())) { if (!ruleSuffixFilePathMap.containsKey(rule.getSuffix())) {
...@@ -417,39 +425,23 @@ public class Inspector { ...@@ -417,39 +425,23 @@ public class Inspector {
private void setRule(Path path, StringBuilder stringBuilder, PomDependency dependency) { private void setRule(Path path, StringBuilder stringBuilder, PomDependency dependency) {
stringBuilder.append(dependency.getGroupId()).append(":").append(dependency.getArtifactId()); stringBuilder.append(dependency.getGroupId()).append(":").append(dependency.getArtifactId());
if (inspectParameter.getAdmin() == 1) {
Rule rule = new Rule(); Rule rule = new Rule();
if (inspectParameter.getAdmin() == 1) {
rule.setTechnologyId(techJavaSupport.getId()); rule.setTechnologyId(techJavaSupport.getId());
rule.setTarget(dependency.getGroupId());
rule.setTechnologyName(techJavaSupport.getTechnologyName()); rule.setTechnologyName(techJavaSupport.getTechnologyName());
rule.setSuffix("*");
rule.setId(UUIDUtil.getUUID());
Rule rule1 = new Rule();
rule1.setTechnologyId(techJavaSupport.getId());
rule1.setTarget(dependency.getArtifactId());
rule1.setTechnologyName(techJavaSupport.getTechnologyName());
rule1.setSuffix("*");
rule1.setId(UUIDUtil.getUUID());
if (!ruleMap.containsKey(dependency.getGroupId() + ":" + rule.getSuffix())) {
rules.add(rule);
ruleMap.put(dependency.getGroupId() + ":" + rule.getSuffix(), rule);
}
if (!ruleMap.containsKey(dependency.getArtifactId() + ":" + rule1.getSuffix())) {
rules.add(rule1);
ruleMap.put(dependency.getArtifactId() + ":" + rule1.getSuffix(), rule1);
}
dependency.setSupport(1); dependency.setSupport(1);
} else { } else {
Rule rule = new Rule();
rule.setTechnologyId(techUnKnowSupport.getId()); rule.setTechnologyId(techUnKnowSupport.getId());
rule.setTarget(dependency.getGroupId());
rule.setTechnologyName(techUnKnowSupport.getTechnologyName()); rule.setTechnologyName(techUnKnowSupport.getTechnologyName());
}
rule.setTarget(dependency.getGroupId());
rule.setSuffix("*"); rule.setSuffix("*");
rule.setId(UUIDUtil.getUUID()); rule.setId(UUIDUtil.getUUID());
Rule rule1 = new Rule(); Rule rule1 = new Rule();
rule1.setTechnologyId(techUnKnowSupport.getId()); rule1.setTechnologyId(techJavaSupport.getId());
rule1.setTarget(dependency.getArtifactId()); rule1.setTarget(dependency.getArtifactId());
rule1.setTechnologyName(techUnKnowSupport.getTechnologyName()); rule1.setTechnologyName(techJavaSupport.getTechnologyName());
rule1.setSuffix("*"); rule1.setSuffix("*");
rule1.setId(UUIDUtil.getUUID()); rule1.setId(UUIDUtil.getUUID());
if (!ruleMap.containsKey(dependency.getGroupId() + ":" + rule.getSuffix())) { if (!ruleMap.containsKey(dependency.getGroupId() + ":" + rule.getSuffix())) {
...@@ -460,10 +452,6 @@ public class Inspector { ...@@ -460,10 +452,6 @@ public class Inspector {
rules.add(rule1); rules.add(rule1);
ruleMap.put(dependency.getArtifactId() + ":" + rule1.getSuffix(), rule1); ruleMap.put(dependency.getArtifactId() + ":" + rule1.getSuffix(), rule1);
} }
int i = valiWarn(ruleList, path, stringBuilder.toString(), 0);
dependency.setSupport(i);
}
stringBuilder.delete(0, stringBuilder.length()); stringBuilder.delete(0, stringBuilder.length());
} }
...@@ -508,9 +496,9 @@ public class Inspector { ...@@ -508,9 +496,9 @@ public class Inspector {
if (supportWarns.size() != 10) { if (supportWarns.size() != 10) {
supportWarns.add(warn); supportWarns.add(warn);
} }
Integer size = report.getSupportSize(); Integer supportSize = report.getSupportSize();
Integer integer = size + 1; int i = supportSize + 1;
report.setSupportSize(integer); report.setSupportSize(i);
supportStatus = 1; supportStatus = 1;
} }
} }
...@@ -518,6 +506,10 @@ public class Inspector { ...@@ -518,6 +506,10 @@ public class Inspector {
return supportStatus; return supportStatus;
} }
/**
* 扫描源文件
* @throws IOException
*/
public void scanFiles() throws IOException { public void scanFiles() throws IOException {
//以下为计算文件名称匹配正则表达式 //以下为计算文件名称匹配正则表达式
FileSystem aDefault = FileSystems.getDefault(); FileSystem aDefault = FileSystems.getDefault();
...@@ -538,7 +530,7 @@ public class Inspector { ...@@ -538,7 +530,7 @@ public class Inspector {
} }
//文件读取 //文件读取
if(inspectParameter.getSourceAddress()!=null){ if (inspectParameter.getSourceAddress() != null) {
Files.walkFileTree(Paths.get(inspectParameter.getSourceAddress()), new FileVisitor<Path>() { Files.walkFileTree(Paths.get(inspectParameter.getSourceAddress()), new FileVisitor<Path>() {
@Override @Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
...@@ -629,6 +621,7 @@ public class Inspector { ...@@ -629,6 +621,7 @@ public class Inspector {
}); });
} }
} }
public class Counter { public class Counter {
private int i = 0; private int i = 0;
......
package com.zjty.project.inspect.service; package com.zjty.project.inspect.service;
import com.zjty.project.inspect.entity.CustomPage; import com.zjty.project.inspect.entity.*;
import com.zjty.project.inspect.entity.RuleQo;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -17,16 +16,13 @@ public interface RuleService { ...@@ -17,16 +16,13 @@ public interface RuleService {
* @param ruleQo 规则封装类 * @param ruleQo 规则封装类
*/ */
public void addRule(RuleQo ruleQo); public void addRule(RuleQo ruleQo);
public void addRule(List<Rule> rules);
/** /**
* 修改规则 * 修改规则
* @param ruleQo 规则封装类 * @param ruleQo 规则封装类
*/ */
public void upRule(RuleQo ruleQo); public void upRule(RuleQo ruleQo);
/**
* 根据id删除规则
* @param id
*/
public void deleteById(String id);
/** /**
* 删除规则 * 删除规则
...@@ -38,10 +34,17 @@ public interface RuleService { ...@@ -38,10 +34,17 @@ public interface RuleService {
* 查询所有规则 * 查询所有规则
* @return 规则 * @return 规则
*/ */
List<RuleQo> findAll(); List<RuleCollection> findAll();
/**
* 查询所有规则
* @return 规则
*/
List<Rule> findRules();
List<RuleCollection> findByName(String name);
List<RuleQo> findByName(String name); CustomPage<RuleCollection> findSearch(Map searchMap, int page, int size);
CustomPage<RuleQo> findSearch(Map searchMap, int page, int size); List<Rule> findAllByTechnologyIdIn(List<String> technologyIds);
void test();
} }
package com.zjty.project.inspect.service.impl; package com.zjty.project.inspect.service.impl;
import com.zjty.project.inspect.dao.RuleCollectionDao;
import com.zjty.project.inspect.dao.RuleDao; import com.zjty.project.inspect.dao.RuleDao;
import com.zjty.project.inspect.entity.CustomPage; import com.zjty.project.inspect.entity.*;
import com.zjty.project.inspect.entity.ExcelDataVo;
import com.zjty.project.inspect.entity.Rule;
import com.zjty.project.inspect.entity.RuleQo;
import com.zjty.project.inspect.service.RuleService; import com.zjty.project.inspect.service.RuleService;
import com.zjty.project.inspect.service.TechnologyService;
import com.zjty.project.inspect.utils.ExcelReader;
import com.zjty.project.inspect.utils.UUIDUtil; import com.zjty.project.inspect.utils.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Modifying;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import java.util.*; import java.util.*;
/** /**
...@@ -39,31 +33,9 @@ public class RuleServiceImpl implements RuleService { ...@@ -39,31 +33,9 @@ public class RuleServiceImpl implements RuleService {
*/ */
@Autowired @Autowired
private RuleDao ruleDao; private RuleDao ruleDao;
@Autowired
private TechnologyService technologyService;
@Override
public void test() {
List<ExcelDataVo> excelDataVos = ExcelReader.readExcel("C:\\Users\\Jey\\Desktop\\生成代码\\规则表.xlsx");
System.out.println(excelDataVos);
HashSet<String> set=new HashSet();
for (ExcelDataVo excelDataVo : excelDataVos) {
List<Rule> rules = ruleDao.findAllByTarget(excelDataVo.getName());
if(rules==null||rules.size()==0){
set.add(excelDataVo.getName());
}
}
for (String s : set) {
Rule rule=new Rule();
rule.setTechnologyName("国产化依赖(支持)");
rule.setTechnologyId("967a8bd0-eb27-4fb6-ba1d-1bca21cea5b4");
rule.setSuffix("java");
rule.setTarget(s);
rule.setId(UUIDUtil.getUUID());
ruleDao.save(rule);
}
} @Autowired
private RuleCollectionDao ruleCollectionDao;
/** /**
* 新增规则 * 新增规则
...@@ -76,7 +48,7 @@ public class RuleServiceImpl implements RuleService { ...@@ -76,7 +48,7 @@ public class RuleServiceImpl implements RuleService {
for (String suffix : suffixes) { for (String suffix : suffixes) {
Rule rule1 = ruleDao.findByTargetAndSuffixEqualsAndTechnologyIdEquals(ruleQo.getTarget(), suffix,ruleQo.getTechnologyId()); Rule rule1 = ruleDao.findByTargetAndSuffixEqualsAndTechnologyIdEquals(ruleQo.getTarget(), suffix,ruleQo.getTechnologyId());
if (rule1 != null) { if (rule1 != null) {
return; continue;
} }
Rule rule = new Rule(); Rule rule = new Rule();
rule.setTarget(ruleQo.getTarget()); rule.setTarget(ruleQo.getTarget());
...@@ -86,9 +58,18 @@ public class RuleServiceImpl implements RuleService { ...@@ -86,9 +58,18 @@ public class RuleServiceImpl implements RuleService {
rule.setId(UUIDUtil.getUUID()); rule.setId(UUIDUtil.getUUID());
ruleDao.save(rule); ruleDao.save(rule);
} }
RuleCollection ruleCollection = dataQo2RuleCollection(ruleQo);
ruleCollectionDao.save(ruleCollection);
} }
@Override
public void addRule(List<Rule> rules) {
ruleDao.saveAll(rules);
List<RuleCollection> ruleCollections = dataList2RuleCollection(rules);
ruleCollectionDao.saveAll(ruleCollections);
}
/** /**
* 条件查询+分页 * 条件查询+分页
* *
...@@ -98,17 +79,22 @@ public class RuleServiceImpl implements RuleService { ...@@ -98,17 +79,22 @@ public class RuleServiceImpl implements RuleService {
* @return * @return
*/ */
@Override @Override
public CustomPage<RuleQo> findSearch(Map whereMap, int page, int size) { public CustomPage<RuleCollection> findSearch(Map whereMap, int page, int size) {
Specification<Rule> specification = createSpecification(whereMap); Specification<RuleCollection> specification = createSpecification(whereMap);
PageRequest pageRequest = PageRequest.of(page - 1, size); Sort sort = new Sort(Sort.Direction.DESC, "updateDate");
Page<Rule> all = ruleDao.findAll(specification, pageRequest); PageRequest pageRequest = PageRequest.of(page - 1, size, sort);
List<RuleQo> ruleQos = data2RuleQo(all.getContent()); Page<RuleCollection> ruleCollections = ruleCollectionDao.findAll(specification, pageRequest);
CustomPage<RuleCollection> customPage = new CustomPage<>();
customPage.setTotalPage(ruleCollections.getTotalPages());
customPage.setTotalElement((int)ruleCollections.getTotalElements());
customPage.setObjects(ruleCollections.getContent());
return customPage;
}
CustomPage<RuleQo> myCustomPage = new CustomPage<>(); @Override
myCustomPage.setTotalPage(all.getTotalPages()); public List<Rule> findAllByTechnologyIdIn(List<String> technologyIds) {
myCustomPage.setTotalElement((int)all.getTotalElements()); return ruleDao.findAllByTechnologyIdIn(technologyIds);
myCustomPage.setObjects(ruleQos);
return myCustomPage;
} }
/** /**
...@@ -117,22 +103,18 @@ public class RuleServiceImpl implements RuleService { ...@@ -117,22 +103,18 @@ public class RuleServiceImpl implements RuleService {
* @param searchMap * @param searchMap
* @return * @return
*/ */
private Specification<Rule> createSpecification(Map searchMap) { private Specification<RuleCollection> createSpecification(Map searchMap) {
return new Specification<Rule>() { return (root, query, cb) -> {
List<Predicate> predicateList = new ArrayList<>();
@Override
public Predicate toPredicate(Root<Rule> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicateList = new ArrayList<Predicate>();
if (searchMap.get("technologyName") != null && !"".equals(searchMap.get("technologyName"))) { if (searchMap.get("technologyName") != null && !"".equals(searchMap.get("technologyName"))) {
predicateList.add(cb.like(root.get("technologyName").as(String.class), "%" + (String) searchMap.get("technologyName") + "%")); predicateList.add(cb.like(root.get("technologyName").as(String.class), "%" + searchMap.get("technologyName") + "%"));
} }
if (searchMap.get("target") != null && !"".equals(searchMap.get("target"))) { if (searchMap.get("target") != null && !"".equals(searchMap.get("target"))) {
predicateList.add(cb.like(root.get("target").as(String.class), "%" + (String) searchMap.get("target") + "%")); predicateList.add(cb.like(root.get("target").as(String.class), "%" + searchMap.get("target") + "%"));
} }
return cb.and(predicateList.toArray(new Predicate[predicateList.size()])); return cb.and(predicateList.toArray(new Predicate[predicateList.size()]));
}
}; };
} }
...@@ -141,16 +123,16 @@ public class RuleServiceImpl implements RuleService { ...@@ -141,16 +123,16 @@ public class RuleServiceImpl implements RuleService {
public void upRule(RuleQo ruleQo) { public void upRule(RuleQo ruleQo) {
RuleQo oldRule = ruleQo.getOldRule(); RuleQo oldRule = ruleQo.getOldRule();
List<Rule> rules = ruleDao.findAllByTechnologyIdEqualsAndTargetEquals(oldRule.getTechnologyId(), oldRule.getTarget()); List<Rule> rules = ruleDao.findAllByTechnologyIdEqualsAndTargetEquals(oldRule.getTechnologyId(), oldRule.getTarget());
RuleCollection ruleCollection = ruleCollectionDao.findAllByTechnologyIdEqualsAndTargetEquals(oldRule.getTechnologyId(), oldRule.getTarget());
for (Rule rule : rules) { for (Rule rule : rules) {
ruleDao.deleteById(rule.getId()); ruleDao.deleteById(rule.getId());
} }
if(ruleCollection!=null){
ruleCollectionDao.deleteById(ruleCollection.getId());
}
addRule(ruleQo); addRule(ruleQo);
} }
@Override
public void deleteById(String id) {
ruleDao.deleteById(id);
}
@Override @Override
@Modifying @Modifying
...@@ -159,6 +141,11 @@ public class RuleServiceImpl implements RuleService { ...@@ -159,6 +141,11 @@ public class RuleServiceImpl implements RuleService {
for (Rule rule : rules) { for (Rule rule : rules) {
ruleDao.deleteById(rule.getId()); ruleDao.deleteById(rule.getId());
} }
RuleCollection ruleCollection = ruleCollectionDao.findAllByTechnologyIdEqualsAndTargetEquals(ruleQo.getTechnologyId(), ruleQo.getTarget());
if(ruleCollection!=null){
ruleCollectionDao.deleteById(ruleCollection.getId());
}
} }
/** /**
...@@ -172,40 +159,74 @@ public class RuleServiceImpl implements RuleService { ...@@ -172,40 +159,74 @@ public class RuleServiceImpl implements RuleService {
* @return RuleVoList * @return RuleVoList
*/ */
@Override @Override
public List<RuleQo> findAll() { public List<RuleCollection> findAll() {
List<Rule> rules = ruleDao.findAll(); List<RuleCollection> rules = ruleCollectionDao.findAll();
List<RuleQo> ruleQos = data2RuleQo(rules); return rules;
return ruleQos; }
@Override
public List<Rule> findRules() {
return ruleDao.findAll();
} }
@Override @Override
public List<RuleQo> findByName(String name) { public List<RuleCollection> findByName(String name) {
List<Rule> rules = ruleDao.findAllByTargetLike("%" + name + "%"); List<RuleCollection> rules = ruleCollectionDao.findAllByTargetLike("%" + name + "%");
if (rules != null && rules.size() > 0) { return rules;
return data2RuleQo(rules); }
private RuleCollection dataQo2RuleCollection(RuleQo ruleQo){
RuleCollection ruleCollection = new RuleCollection();
ruleCollection.setTechnologyName(ruleQo.getTechnologyName());
ruleCollection.setTechnologyId(ruleQo.getTechnologyId());
ruleCollection.setTarget(ruleQo.getTarget());
ruleCollection.setId(UUIDUtil.getUUID());
StringBuilder stringBuilder = new StringBuilder();
for (String suffix : ruleQo.getSuffix()) {
if(stringBuilder.length()==0){
stringBuilder.append(suffix);
}else{
stringBuilder.append(",").append(suffix);
} }
return null; }
ruleCollection.setSuffix(stringBuilder.toString());
return ruleCollection;
} }
private List<RuleQo> data2RuleQo(List<Rule> rules){ private List<RuleCollection> dataList2RuleCollection(List<Rule> rules){
HashMap<String, RuleQo> hashMap = new HashMap<>(); ArrayList<RuleCollection> ruleCollections = new ArrayList<>();
HashMap<String, ArrayList<String>> map = new HashMap<>();
HashMap<String, Rule> ruleMap = new HashMap<>();
for (Rule rule : rules) { for (Rule rule : rules) {
if(!hashMap.containsKey(rule.getTarget()+rule.getTechnologyId())){ ruleMap.put(rule.getTarget()+":"+rule.getTechnologyId(),rule);
RuleQo ruleQo = new RuleQo(); if(map.containsKey(rule.getTarget()+":"+rule.getTechnologyId())){
ruleQo.setId(rule.getId()); ArrayList<String> suffix = map.get(rule.getTarget()+":"+rule.getTechnologyId());
ruleQo.setTarget(rule.getTarget()); suffix.add(rule.getSuffix());
ruleQo.setTechnologyId(rule.getTechnologyId()); }else{
ruleQo.setTechnologyName(rule.getTechnologyName());
ArrayList<String> suffix = new ArrayList<>(); ArrayList<String> suffix = new ArrayList<>();
suffix.add(rule.getSuffix()); suffix.add(rule.getSuffix());
ruleQo.setSuffix(suffix); map.put(rule.getTarget()+":"+rule.getTechnologyId(),suffix);
hashMap.put(rule.getTarget()+rule.getTechnologyId(),ruleQo); }
}
for (String target : map.keySet()) {
Rule rule = ruleMap.get(target);
RuleCollection ruleCollection = new RuleCollection();
ruleCollection.setTarget(rule.getTarget());
ruleCollection.setTechnologyId(rule.getTechnologyId());
ruleCollection.setTechnologyName(rule.getTechnologyName());
ruleCollection.setId(UUIDUtil.getUUID());
StringBuilder stringBuilder = new StringBuilder();
for (String suffix : map.get(target)) {
if(stringBuilder.length()==0){
stringBuilder.append(suffix);
}else{ }else{
RuleQo ruleQo = hashMap.get(rule.getTarget() + rule.getTechnologyId()); stringBuilder.append(",").append(suffix);
ruleQo.getSuffix().add(rule.getSuffix()); }
} }
ruleCollection.setSuffix(stringBuilder.toString());
ruleCollections.add(ruleCollection);
} }
return new ArrayList<>(hashMap.values()); return ruleCollections;
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论