|
@@ -0,0 +1,214 @@
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8" ?>
|
|
|
|
|
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
|
|
|
+<mapper namespace="com.jeeplus.modules.WorkKnowledgeBase.dao.WorkKnowledgeBaseShareInfoDao">
|
|
|
|
|
+
|
|
|
|
|
+ <sql id="shareColumns">
|
|
|
|
|
+ a.id AS "id",
|
|
|
|
|
+ a.tree_node_id AS "treeNodeId",
|
|
|
|
|
+ a.file_name AS "fileName",
|
|
|
|
|
+ a.file_url AS "fileUrl",
|
|
|
|
|
+ a.create_time AS "createTime",
|
|
|
|
|
+ a.create_by AS "createBy.id",
|
|
|
|
|
+ a.create_date AS "createDate",
|
|
|
|
|
+ a.update_by AS "updateBy.id",
|
|
|
|
|
+ a.update_date AS "updateDate",
|
|
|
|
|
+ a.remarks AS "remarks",
|
|
|
|
|
+ a.del_flag AS "delFlag"
|
|
|
|
|
+ </sql>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 单条查询 -->
|
|
|
|
|
+ <select id="get" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE a.id = #{id}
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 通用findList(不带动态列) -->
|
|
|
|
|
+ <select id="findList" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ <where>
|
|
|
|
|
+ a.del_flag = #{DEL_FLAG_NORMAL}
|
|
|
|
|
+ <if test="treeNodeId != null and treeNodeId != ''">
|
|
|
|
|
+ AND a.tree_node_id = #{treeNodeId}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="fileName != null and fileName != ''">
|
|
|
|
|
+ AND a.file_name LIKE CONCAT('%',#{fileName},'%')
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </where>
|
|
|
|
|
+ ORDER BY a.create_date DESC
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 根据节点id查询文件列表 -->
|
|
|
|
|
+ <select id="findByTreeNodeId" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE a.tree_node_id = #{treeNodeId}
|
|
|
|
|
+ AND a.del_flag = '0'
|
|
|
|
|
+ ORDER BY a.create_date DESC
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!--
|
|
|
|
|
+ =================================================================
|
|
|
|
|
+ 动态列表查询(核心 SQL)
|
|
|
|
|
+ 规则:
|
|
|
|
|
+ 1. 动态列使用 CASE WHEN + MAX + GROUP BY 行转列
|
|
|
|
|
+ 2. 动态字段查询条件使用 EXISTS 子查询,禁止写在主 WHERE 中
|
|
|
|
|
+ =================================================================
|
|
|
|
|
+ -->
|
|
|
|
|
+ <select id="findDynamicList" resultType="java.util.Map">
|
|
|
|
|
+ SELECT
|
|
|
|
|
+ a.id AS "id",
|
|
|
|
|
+ a.tree_node_id AS "treeNodeId",
|
|
|
|
|
+ a.file_name AS "fileName",
|
|
|
|
|
+ a.file_url AS "fileUrl",
|
|
|
|
|
+ DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s') AS "createTime",
|
|
|
|
|
+ a.create_by AS "createById",
|
|
|
|
|
+ (SELECT su.name FROM sys_user su WHERE su.id = a.create_by) AS "createByName",
|
|
|
|
|
+ a.create_date AS "createDate",
|
|
|
|
|
+ a.remarks AS "remarks"
|
|
|
|
|
+ <!-- 动态列:CASE WHEN + MAX + GROUP BY -->
|
|
|
|
|
+ <if test="dynamicFields != null and dynamicFields.size() > 0">
|
|
|
|
|
+ <foreach collection="dynamicFields" item="field" separator="">
|
|
|
|
|
+ ,MAX(CASE WHEN v.dynamic_field_id = #{field.id} THEN v.field_value ELSE NULL END) AS "dynamic_${field.fieldKey}"
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ LEFT JOIN work_knowledge_base_dynamic_value_info v
|
|
|
|
|
+ ON v.file_id = a.id AND v.del_flag = '0'
|
|
|
|
|
+ <where>
|
|
|
|
|
+ a.del_flag = '0'
|
|
|
|
|
+ <!-- 固定查询:节点id(通过根节点下所有节点查询) -->
|
|
|
|
|
+ <if test="entity.rootId != null and entity.rootId != ''">
|
|
|
|
|
+ AND a.tree_node_id IN (
|
|
|
|
|
+ SELECT t.id FROM work_knowledge_base_tree_info t
|
|
|
|
|
+ WHERE (t.id = #{entity.rootId} OR t.root_id = #{entity.rootId})
|
|
|
|
|
+ AND t.del_flag = '0'
|
|
|
|
|
+ )
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <!-- 固定查询:文件名模糊查询 -->
|
|
|
|
|
+ <if test="entity.fileName != null and entity.fileName != ''">
|
|
|
|
|
+ AND a.file_name LIKE CONCAT('%', #{entity.fileName}, '%')
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <!-- 动态字段查询条件:EXISTS 子查询(禁止写在主WHERE中) -->
|
|
|
|
|
+ <if test="dynamicConditions != null">
|
|
|
|
|
+ <foreach collection="dynamicConditions" index="fieldId" item="queryVal">
|
|
|
|
|
+ <if test="queryVal != null and queryVal != ''">
|
|
|
|
|
+ AND EXISTS (
|
|
|
|
|
+ SELECT 1
|
|
|
|
|
+ FROM work_knowledge_base_dynamic_value_info ec
|
|
|
|
|
+ WHERE ec.file_id = a.id
|
|
|
|
|
+ AND ec.dynamic_field_id = #{fieldId}
|
|
|
|
|
+ AND ec.field_value LIKE CONCAT('%', #{queryVal}, '%')
|
|
|
|
|
+ AND ec.del_flag = '0'
|
|
|
|
|
+ )
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </where>
|
|
|
|
|
+ GROUP BY a.id, a.tree_node_id, a.file_name, a.file_url, a.create_time,
|
|
|
|
|
+ a.create_by, a.create_date, a.remarks
|
|
|
|
|
+ ORDER BY a.create_date DESC
|
|
|
|
|
+ <if test="offset != null and limit != null">
|
|
|
|
|
+ LIMIT #{offset}, #{limit}
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 动态列表查询总数 -->
|
|
|
|
|
+ <select id="findDynamicCount" resultType="java.lang.Integer">
|
|
|
|
|
+ SELECT COUNT(DISTINCT a.id)
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ <where>
|
|
|
|
|
+ a.del_flag = '0'
|
|
|
|
|
+ <if test="entity.rootId != null and entity.rootId != ''">
|
|
|
|
|
+ AND a.tree_node_id IN (
|
|
|
|
|
+ SELECT t.id FROM work_knowledge_base_tree_info t
|
|
|
|
|
+ WHERE (t.id = #{entity.rootId} OR t.root_id = #{entity.rootId})
|
|
|
|
|
+ AND t.del_flag = '0'
|
|
|
|
|
+ )
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <if test="entity.fileName != null and entity.fileName != ''">
|
|
|
|
|
+ AND a.file_name LIKE CONCAT('%', #{entity.fileName}, '%')
|
|
|
|
|
+ </if>
|
|
|
|
|
+ <!-- 动态字段查询条件:EXISTS 子查询 -->
|
|
|
|
|
+ <if test="dynamicConditions != null">
|
|
|
|
|
+ <foreach collection="dynamicConditions" index="fieldId" item="queryVal">
|
|
|
|
|
+ <if test="queryVal != null and queryVal != ''">
|
|
|
|
|
+ AND EXISTS (
|
|
|
|
|
+ SELECT 1
|
|
|
|
|
+ FROM work_knowledge_base_dynamic_value_info ec
|
|
|
|
|
+ WHERE ec.file_id = a.id
|
|
|
|
|
+ AND ec.dynamic_field_id = #{fieldId}
|
|
|
|
|
+ AND ec.field_value LIKE CONCAT('%', #{queryVal}, '%')
|
|
|
|
|
+ AND ec.del_flag = '0'
|
|
|
|
|
+ )
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ </if>
|
|
|
|
|
+ </where>
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="findUniqueByProperty" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE ${propertyName} = #{value} AND a.del_flag = '0'
|
|
|
|
|
+ LIMIT 1
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="findListByUser" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE a.del_flag = #{DEL_FLAG_NORMAL}
|
|
|
|
|
+ ORDER BY a.create_date DESC
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="findAllList" resultType="com.jeeplus.modules.WorkKnowledgeBase.entity.WorkKnowledgeBaseShareInfo">
|
|
|
|
|
+ SELECT <include refid="shareColumns"/>
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE a.del_flag = #{DEL_FLAG_NORMAL}
|
|
|
|
|
+ ORDER BY a.create_date DESC
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <select id="queryCount" resultType="java.lang.Integer">
|
|
|
|
|
+ SELECT COUNT(1)
|
|
|
|
|
+ FROM work_knowledge_base_share_info a
|
|
|
|
|
+ WHERE a.del_flag = #{DEL_FLAG_NORMAL}
|
|
|
|
|
+ </select>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 插入 -->
|
|
|
|
|
+ <insert id="insert">
|
|
|
|
|
+ INSERT INTO work_knowledge_base_share_info (
|
|
|
|
|
+ id, tree_node_id, file_name, file_url, create_time,
|
|
|
|
|
+ create_by, create_date, update_by, update_date, remarks, del_flag
|
|
|
|
|
+ ) VALUES (
|
|
|
|
|
+ #{id}, #{treeNodeId}, #{fileName}, #{fileUrl}, NOW(),
|
|
|
|
|
+ #{createBy.id}, #{createDate}, #{updateBy.id}, #{updateDate}, #{remarks}, #{delFlag}
|
|
|
|
|
+ )
|
|
|
|
|
+ </insert>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 更新 -->
|
|
|
|
|
+ <update id="update">
|
|
|
|
|
+ UPDATE work_knowledge_base_share_info SET
|
|
|
|
|
+ file_name = #{fileName},
|
|
|
|
|
+ file_url = #{fileUrl},
|
|
|
|
|
+ update_by = #{updateBy.id},
|
|
|
|
|
+ update_date = #{updateDate},
|
|
|
|
|
+ remarks = #{remarks}
|
|
|
|
|
+ WHERE id = #{id}
|
|
|
|
|
+ </update>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 物理删除 -->
|
|
|
|
|
+ <delete id="delete">
|
|
|
|
|
+ DELETE FROM work_knowledge_base_share_info WHERE id = #{id}
|
|
|
|
|
+ </delete>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 逻辑删除 -->
|
|
|
|
|
+ <update id="deleteByLogic">
|
|
|
|
|
+ UPDATE work_knowledge_base_share_info SET
|
|
|
|
|
+ del_flag = #{DEL_FLAG_DELETE},
|
|
|
|
|
+ update_by = #{updateBy.id},
|
|
|
|
|
+ update_date = #{updateDate}
|
|
|
|
|
+ WHERE id = #{id}
|
|
|
|
|
+ </update>
|
|
|
|
|
+
|
|
|
|
|
+</mapper>
|