常用话术

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.*;
@ -40,7 +41,7 @@ public class TermBankController extends BaseController {
} }
@GetMapping("/selectTermBankList") @GetMapping("/selectTermBankList")
public AjaxResult selectTermBankList(TermBank termBank) { public AjaxResult selectTermBankList(TermBank termBank) {
return AjaxResult.success(termBankService.selectTermBankList(termBank)); return AjaxResult.success(termBankService.selectTermBankList(termBank));
} }
@ -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

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