常用话术

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.manage.domain.termbank.TermBank;
import com.xinelu.manage.service.termbank.ITermBankService;
import com.xinelu.manage.vo.termbank.TermBankVO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -40,7 +41,7 @@ public class TermBankController extends BaseController {
}
@GetMapping("/selectTermBankList")
public AjaxResult selectTermBankList(TermBank termBank) {
public AjaxResult selectTermBankList(TermBank termBank) {
return AjaxResult.success(termBankService.selectTermBankList(termBank));
}
@ -97,4 +98,12 @@ public class TermBankController extends BaseController {
public AjaxResult remove(@PathVariable Long[] 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;
import com.xinelu.manage.domain.termbank.TermBank;
import com.xinelu.manage.vo.termbank.TermBankVO;
import java.util.List;
@ -27,6 +28,11 @@ public interface TermBankMapper {
*/
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.manage.domain.termbank.TermBank;
import com.xinelu.manage.vo.termbank.TermBankVO;
import java.util.List;
@ -61,4 +62,9 @@ public interface ITermBankService {
* @return 结果
*/
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.mapper.termbank.TermBankMapper;
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.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* 常用术语(知识库)Service业务层处理
@ -120,4 +125,62 @@ public class TermBankServiceImpl implements ITermBankService {
public int deleteTermBankById(Long 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 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

@ -5,22 +5,34 @@
<mapper namespace="com.xinelu.manage.mapper.termbank.TermBankMapper">
<resultMap type="TermBank" id="TermBankResult">
<result property="id" column="id"/>
<result property="termCode" column="term_code"/>
<result property="termName" column="term_name"/>
<result property="termContent" column="term_content"/>
<result property="parentTermCode" column="parent_term_code"/>
<result property="termLevel" column="term_level"/>
<result property="termSort" column="term_sort"/>
<result property="termRemark" column="term_remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="id" column="id"/>
<result property="termCode" column="term_code"/>
<result property="termName" column="term_name"/>
<result property="termContent" column="term_content"/>
<result property="parentTermCode" column="parent_term_code"/>
<result property="termLevel" column="term_level"/>
<result property="termSort" column="term_sort"/>
<result property="termRemark" column="term_remark"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<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>
<select id="selectTermBankList" parameterType="TermBank" resultMap="TermBankResult">
@ -33,7 +45,7 @@
and term_name like concat('%', #{termName}, '%')
</if>
<if test="termContent != null and termContent != ''">
and term_content = #{termContent}
and term_content like concat('%', #{termContent}, '%')
</if>
<if test="parentTermCode != null and parentTermCode != ''">
and parent_term_code = #{parentTermCode}
@ -47,110 +59,124 @@
<if test="termRemark != null and termRemark != ''">
and term_remark = #{termRemark}
</if>
order by term_sort
</where>
</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"
resultMap="TermBankResult">
<include refid="selectTermBankVo"/>
where id = #{id}
<include refid="selectTermBankVo"/>
where id = #{id}
</select>
<insert id="insertTermBank" parameterType="TermBank" useGeneratedKeys="true"
keyProperty="id">
insert into term_bank
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="termCode != null and termCode != ''">term_code,
</if>
<if test="termName != null">term_name,
</if>
<if test="termContent != null">term_content,
</if>
<if test="parentTermCode != null">parent_term_code,
</if>
<if test="termLevel != null">term_level,
</if>
<if test="termSort != null">term_sort,
</if>
<if test="termRemark != null">term_remark,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
<if test="termCode != null and termCode != ''">term_code,
</if>
<if test="termName != null">term_name,
</if>
<if test="termContent != null">term_content,
</if>
<if test="parentTermCode != null">parent_term_code,
</if>
<if test="termLevel != null">term_level,
</if>
<if test="termSort != null">term_sort,
</if>
<if test="termRemark != null">term_remark,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="termCode != null and termCode != ''">#{termCode},
</if>
<if test="termName != null">#{termName},
</if>
<if test="termContent != null">#{termContent},
</if>
<if test="parentTermCode != null">#{parentTermCode},
</if>
<if test="termLevel != null">#{termLevel},
</if>
<if test="termSort != null">#{termSort},
</if>
<if test="termRemark != null">#{termRemark},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
<if test="termCode != null and termCode != ''">#{termCode},
</if>
<if test="termName != null">#{termName},
</if>
<if test="termContent != null">#{termContent},
</if>
<if test="parentTermCode != null">#{parentTermCode},
</if>
<if test="termLevel != null">#{termLevel},
</if>
<if test="termSort != null">#{termSort},
</if>
<if test="termRemark != null">#{termRemark},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>
<update id="updateTermBank" parameterType="TermBank">
update term_bank
<trim prefix="SET" suffixOverrides=",">
<if test="termCode != null and termCode != ''">term_code =
#{termCode},
</if>
<if test="termName != null">term_name =
#{termName},
</if>
<if test="termContent != null">term_content =
#{termContent},
</if>
<if test="parentTermCode != null">parent_term_code =
#{parentTermCode},
</if>
<if test="termLevel != null">term_level =
#{termLevel},
</if>
<if test="termSort != null">term_sort =
#{termSort},
</if>
<if test="termRemark != null">term_remark =
#{termRemark},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="termCode != null and termCode != ''">term_code =
#{termCode},
</if>
<if test="termName != null">term_name =
#{termName},
</if>
<if test="termContent != null">term_content =
#{termContent},
</if>
<if test="parentTermCode != null">parent_term_code =
#{parentTermCode},
</if>
<if test="termLevel != null">term_level =
#{termLevel},
</if>
<if test="termSort != null">term_sort =
#{termSort},
</if>
<if test="termRemark != null">term_remark =
#{termRemark},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteTermBankById" parameterType="Long">
delete from term_bank where id = #{id}
delete
from term_bank
where id = #{id}
</delete>
<delete id="deleteTermBankByIds" parameterType="String">