常用话术

This commit is contained in:
zhangheng 2024-06-11 16:05:27 +08:00
parent d2bee9c32d
commit 38b64776b2
7 changed files with 237 additions and 96 deletions

View File

@ -8,6 +8,7 @@ import com.xinelu.common.enums.BusinessType;
import com.xinelu.common.utils.poi.ExcelUtil; import com.xinelu.common.utils.poi.ExcelUtil;
import com.xinelu.manage.domain.termbank.TermBank; import com.xinelu.manage.domain.termbank.TermBank;
import com.xinelu.manage.service.termbank.ITermBankService; import com.xinelu.manage.service.termbank.ITermBankService;
import com.xinelu.manage.vo.termbank.TermBankVO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -97,4 +98,12 @@ public class TermBankController extends BaseController {
public AjaxResult remove(@PathVariable Long[] ids) { public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(termBankService.deleteTermBankByIds(ids)); return toAjax(termBankService.deleteTermBankByIds(ids));
} }
/**
* 常用术语层级树图
*/
@GetMapping("/bankLevel")
public List<TermBankVO> bankLevel(Long level) {
return termBankService.bankLevel(level);
}
} }

View File

@ -1,6 +1,7 @@
package com.xinelu.manage.mapper.termbank; package com.xinelu.manage.mapper.termbank;
import com.xinelu.manage.domain.termbank.TermBank; import com.xinelu.manage.domain.termbank.TermBank;
import com.xinelu.manage.vo.termbank.TermBankVO;
import java.util.List; import java.util.List;
@ -27,6 +28,11 @@ public interface TermBankMapper {
*/ */
List<TermBank> selectTermBankList(TermBank termBank); List<TermBank> selectTermBankList(TermBank termBank);
/**
* 常用术语层级树图
*/
List<TermBankVO> selectTermBankTree(Long level);
/** /**
* 新增常用术语(知识库) * 新增常用术语(知识库)
* *

View File

@ -2,6 +2,7 @@ package com.xinelu.manage.service.termbank;
import com.xinelu.common.core.domain.AjaxResult; import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.termbank.TermBank; import com.xinelu.manage.domain.termbank.TermBank;
import com.xinelu.manage.vo.termbank.TermBankVO;
import java.util.List; import java.util.List;
@ -61,4 +62,9 @@ public interface ITermBankService {
* @return 结果 * @return 结果
*/ */
int deleteTermBankById(Long id); int deleteTermBankById(Long id);
/**
* 常用术语层级树图
*/
List<TermBankVO> bankLevel(Long level);
} }

View File

@ -7,13 +7,18 @@ import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
import com.xinelu.manage.domain.termbank.TermBank; import com.xinelu.manage.domain.termbank.TermBank;
import com.xinelu.manage.mapper.termbank.TermBankMapper; import com.xinelu.manage.mapper.termbank.TermBankMapper;
import com.xinelu.manage.service.termbank.ITermBankService; import com.xinelu.manage.service.termbank.ITermBankService;
import com.xinelu.manage.vo.termbank.TermBankVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* 常用术语(知识库)Service业务层处理 * 常用术语(知识库)Service业务层处理
@ -120,4 +125,62 @@ public class TermBankServiceImpl implements ITermBankService {
public int deleteTermBankById(Long id) { public int deleteTermBankById(Long id) {
return termBankMapper.deleteTermBankById(id); return termBankMapper.deleteTermBankById(id);
} }
/**
* 常用术语层级树图
*/
@Override
public List<TermBankVO> bankLevel(Long level) {
List<TermBankVO> termBanks = termBankMapper.selectTermBankTree(level);
if (CollectionUtils.isEmpty(termBanks)) {
return new ArrayList<>();
}
return buildDeptTree(termBanks);
}
public List<TermBankVO> buildDeptTree(List<TermBankVO> termBanks) {
List<TermBankVO> returnList = new ArrayList<>();
List<String> tempList = termBanks.stream().filter(Objects::nonNull).map(TermBank::getTermCode).filter(Objects::nonNull).collect(Collectors.toList());
for (TermBankVO termBank : termBanks) {
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(termBank.getParentTermCode())) {
recursionFn(termBanks, termBank);
returnList.add(termBank);
}
}
if (returnList.isEmpty()) {
returnList = termBanks;
}
return returnList;
}
private void recursionFn(List<TermBankVO> list, TermBankVO t) {
// 得到子节点列表
List<TermBankVO> childList = getChildList(list, t);
t.setChildren(childList);
for (TermBankVO tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
private List<TermBankVO> getChildList(List<TermBankVO> list, TermBankVO t) {
List<TermBankVO> tlist = new ArrayList<TermBankVO>();
Iterator<TermBankVO> it = list.iterator();
while (it.hasNext()) {
TermBankVO n = (TermBankVO) it.next();
if (Objects.nonNull(n.getParentTermCode()) && n.getParentTermCode().equals(t.getTermCode())) {
tlist.add(n);
}
}
return tlist;
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<TermBankVO> list, TermBankVO t) {
return getChildList(list, t).size() > 0;
}
} }

View File

@ -26,7 +26,7 @@ public class AgencyTreeVO implements Serializable {
private String label; private String label;
/** /**
* 节点名称 * 节点层级
*/ */
private String value; private String value;

View File

@ -0,0 +1,31 @@
package com.xinelu.manage.vo.termbank;
import com.xinelu.manage.domain.termbank.TermBank;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* 常用术语(知识库)对象 term_bank
*
* @author xinelu
* @date 2024-06-07
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class TermBankVO extends TermBank {
private String value;
private List<TermBankVO> children = new ArrayList<TermBankVO>();
public List<TermBankVO> getChildren() {
return children;
}
public void setChildren(List<TermBankVO> children) {
this.children = children;
}
}

View File

@ -20,7 +20,19 @@
</resultMap> </resultMap>
<sql id="selectTermBankVo"> <sql id="selectTermBankVo">
select id, term_code, term_name, term_content, parent_term_code, term_level, term_sort, term_remark, create_by, create_time, update_by, update_time from term_bank select id,
term_code,
term_name,
term_content,
parent_term_code,
term_level,
term_sort,
term_remark,
create_by,
create_time,
update_by,
update_time
from term_bank
</sql> </sql>
<select id="selectTermBankList" parameterType="TermBank" resultMap="TermBankResult"> <select id="selectTermBankList" parameterType="TermBank" resultMap="TermBankResult">
@ -33,7 +45,7 @@
and term_name like concat('%', #{termName}, '%') and term_name like concat('%', #{termName}, '%')
</if> </if>
<if test="termContent != null and termContent != ''"> <if test="termContent != null and termContent != ''">
and term_content = #{termContent} and term_content like concat('%', #{termContent}, '%')
</if> </if>
<if test="parentTermCode != null and parentTermCode != ''"> <if test="parentTermCode != null and parentTermCode != ''">
and parent_term_code = #{parentTermCode} and parent_term_code = #{parentTermCode}
@ -47,9 +59,21 @@
<if test="termRemark != null and termRemark != ''"> <if test="termRemark != null and termRemark != ''">
and term_remark = #{termRemark} and term_remark = #{termRemark}
</if> </if>
order by term_sort
</where> </where>
</select> </select>
<select id="selectTermBankTree" resultType="com.xinelu.manage.vo.termbank.TermBankVO">
select id, term_code, term_content, parent_term_code, term_level, term_sort
from term_bank
<where>
<if test="level != null ">
term_level &lt;= #{level}
</if>
</where>
order by term_level,term_sort
</select>
<select id="selectTermBankById" parameterType="Long" <select id="selectTermBankById" parameterType="Long"
resultMap="TermBankResult"> resultMap="TermBankResult">
<include refid="selectTermBankVo"/> <include refid="selectTermBankVo"/>
@ -150,7 +174,9 @@
</update> </update>
<delete id="deleteTermBankById" parameterType="Long"> <delete id="deleteTermBankById" parameterType="Long">
delete from term_bank where id = #{id} delete
from term_bank
where id = #{id}
</delete> </delete>
<delete id="deleteTermBankByIds" parameterType="String"> <delete id="deleteTermBankByIds" parameterType="String">